TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA...

23
Simp.TCC/Sem.IC.2017(12); 2767-2789 2767 TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA SIMÉTRICA ALAN JORGE DE SOUSA COELHO RAFAEL HENRIQUE COSTA RIBEIRO CID BENDAHAN COELHO CINTRA RESUMO O presente trabalho é produto de pesquisa bibliográfica a cerca dos temas criptologia, criptografia de chave simétrica e segurança de dados, ferramenta de engenharia e desenvolvimento de software, ferramentas e linguagens de programação de sistemas computacionais e teve como objetivo o desenvolvimento de software para criptografia de arquivos em computadores pessoais. Palavras-chave: criptografia; segurança de dados; desenvolvimento de software. ABSTRACT The present work is a bibliographical research product about the topics cryptology, symmetric key cryptography and data security, engineering tool and software development, tools and programming languages of computational systems and had as objective the development of software for cryptography files on personal computers. Keywords: cryptography; data security; software development. INTRODUÇÃO O uso corriqueiro das tecnologias em todos os aspectos da sociedade, que necessita o uso de meios de comunicação para realizar uma gama de tarefas em empresas, órgãos variados. Com essa visão necessitando-se uma segurança de informação para proteger os dados nessas transações comercias. Portanto, o desenvolvimento de programas usando a criptografia para proteger esses dados que tem informações cruciais contidos que não podem ser lidos por pessoas não autorizadas. A segurança da informação abrange os pilares fundamentais que são: Confiabilidade, Disponibilidade, Autenticidade e Integridade, o que com isso traz a importância e a necessidade de criação e implementação de soluções informatizados para manipular com esses aspectos da informação. Com a utilização da criptografia visa-se as garantias da confidencialidade e disponibilidade, este último, parte-se do princípio que os dados só estarão disponível a quem detiver a senha criptográfica e a senha para utilização do software. Justificativa Enquanto interessados na aprendizagem de novas tecnologias apresentadas no mercado atual, observa-se a necessidade de criação de programas específicos usando as técnicas de segurança de dados. Portanto, uma forma de efetiva proteção dos dados pode resolver a questão de segurança da informação é a criação de um programa de criptografia de arquivos ou pastas, sejam eles de cunho simples ou de alta complexidade e de importância. Diariamente são apresentados, em noticias de grande circulação em diversos meios de comunicação a cerca de vazamentos de informações, ataque a dados com captura quebra de senhas e pedindo valor monetário para este arquivo. Encontram-se artigos em sítios especializados em segurança da informação onde que o assunto é tratado conforme exemplo seguinte Vazamento de dados pessoais (PII): caso típico de dados pessoais (ex: endereço e-mail, nomes de familiares, números de documentos, de conta bancária, de cartão de crédito, etc) divulgados na Internet e obtidos a partir de servidores ou redes comprometidos. Dependendo da natureza dos dados divulgados, devem ser notificados os contatos das redes (a rede de onde os dados foram extraídos e a rede na qual os dados foram publicados), os contatos de CSIRTs(Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança) das demais instituições envolvidas (ex: bancos, operadoras de cartão de crédito, etc) e o contato do domínio do site usado para divulgação dos dados, desde que seja evidente que o domínio não é malicioso.( CERT.br) Umas das principiais características dos programas de criptografia de dados é embaralhar as informações contidas nos arquivo preservar o conteúdo deles. Objetivos Objetivo Geral Desenvolver um software para criptografar e descriptografar arquivos. Objetivos Específicos Elaborara cronograma com as metas e prazos das atividades para cada tarefa que comporá o projeto; Pesquisa bibliográfica em bibliotecas e sites da internet; Elaborar referencial teórico por meio de pesquisa bibliográfica referente à parte acadêmica do projeto; Avaliar quais as melhores bibliografias disponíveis nas bibliotecas de Brasília que melhor se aplicam na elaboração de cada etapa conforme os objetivos descritos no cronograma;

Transcript of TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA...

Page 1: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2767

TSI

DESENVOLVIMENTO DE SOFTWARE DE

CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA

SIMÉTRICA

ALAN JORGE DE SOUSA COELHO

RAFAEL HENRIQUE COSTA RIBEIRO CID BENDAHAN COELHO CINTRA

RESUMO O presente trabalho é produto de pesquisa bibliográfica a cerca dos temas criptologia, criptografia de chave simétrica e segurança de dados, ferramenta de engenharia e desenvolvimento de software, ferramentas e linguagens de programação de sistemas computacionais e teve como objetivo o desenvolvimento de software para criptografia de arquivos em computadores pessoais. Palavras-chave: criptografia; segurança de dados; desenvolvimento de software. ABSTRACT The present work is a bibliographical research product about the topics cryptology, symmetric key cryptography and data security, engineering tool and software development, tools and programming languages of computational systems and had as objective the development of software for cryptography files on personal computers. Keywords : cryptography; data security; software development. INTRODUÇÃO O uso corriqueiro das tecnologias em todos os aspectos da sociedade, que necessita o uso de meios de comunicação para realizar uma gama de tarefas em empresas, órgãos variados. Com essa visão necessitando-se uma segurança de informação para proteger os dados nessas transações comercias. Portanto, o desenvolvimento de programas usando a criptografia para proteger esses dados que tem informações cruciais contidos que não podem ser lidos por pessoas não autorizadas. A segurança da informação abrange os pilares fundamentais que são: Confiabilidade, Disponibilidade, Autenticidade e Integridade, o que com isso traz a importância e a necessidade de criação e implementação de soluções informatizados para manipular com esses aspectos da informação. Com a utilização da criptografia visa-se as garantias da confidencialidade e disponibilidade, este último, parte-se do princípio que os dados só estarão disponível a quem detiver a senha criptográfica e a senha para utilização do software. Justificativa

Enquanto interessados na aprendizagem de novas tecnologias apresentadas no mercado atual, observa-se a necessidade de criação de programas específicos usando as técnicas de segurança de dados.

Portanto, uma forma de efetiva proteção dos dados pode resolver a questão de segurança da informação é a criação de um programa de criptografia de arquivos ou pastas, sejam eles de cunho simples ou de alta complexidade e de importância. Diariamente são apresentados, em noticias de grande circulação em diversos meios de comunicação a cerca de vazamentos de informações, ataque a dados com captura quebra

de senhas e pedindo valor monetário para este arquivo. Encontram-se artigos em sítios especializados em segurança da informação onde que o assunto é tratado conforme exemplo seguinte Vazamento de dados pessoais (PII): caso típico de dados pessoais (ex: endereço e-mail, nomes de familiares, números de documentos, de conta bancária, de cartão de crédito, etc) divulgados na Internet e obtidos a partir de servidores ou redes comprometidos. Dependendo da natureza dos dados divulgados, devem ser notificados os contatos das redes (a rede de onde os dados foram extraídos e a rede na qual os dados foram publicados), os contatos de CSIRTs(Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança) das demais instituições envolvidas (ex: bancos, operadoras de cartão de crédito, etc) e o contato do domínio do site usado para divulgação dos dados, desde que seja evidente que o domínio não é malicioso.( CERT.br)

Umas das principiais características dos programas de criptografia de dados é embaralhar as informações contidas nos arquivo preservar o conteúdo deles. Objetivos Objetivo Geral

Desenvolver um software para criptografar e descriptografar arquivos.

Objetivos Específicos • Elaborara cronograma com as metas e prazos das atividades para cada tarefa que comporá o projeto; • Pesquisa bibliográfica em bibliotecas e sites da internet; • Elaborar referencial teórico por meio de pesquisa bibliográfica referente à parte acadêmica do projeto; • Avaliar quais as melhores bibliografias disponíveis nas bibliotecas de Brasília que melhor se aplicam na elaboração de cada etapa conforme os objetivos descritos no cronograma;

Page 2: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2768

• Pesquisar a cerca de algoritmos de criptografia de chave simétrica de alta eficiência a ser implementada em linguagem de programação; • Comparar frameworks para escolher qual melhor se aplica para o desenvolvimento do produto, neste caso o software; • Definir qual o paradigma de programação será utilizado para desenvolver a documentação; • Avaliar qual a melhor ferramenta de programação para usar no desenvolvimento do código fonte do produto; • Aplicar testes no software conforme modelo de negócio escolhido antes da entrega do produto e referencial teórico; • Acompanhamento semanal da equipe com o orientador de modo a alcançar o máximo de qualidade e eficiência no andamento dos trabalhos; • Apresentação final até o final do mês de outubro. Metodologia Para a elaboração deste trabalho de conclusão de curso, foi necessária pesquisa bibliográfica em fontes de informação na internet em sítios especializados com artigos científicos e livros específicos e técnicas especificas, os quais foram de suma importância. Através destes recursos, foi possível finalizar com grande propriedade os assuntos abordados no trabalho. Os conhecimentos adquiridos ao longo do curso foram de extrema contribuição, pois sem a orientação prévia nas disciplinas que antecederam o último semestre, provavelmente não seria possível inicializar os mecanismos de busca. Tendo assim uma importância o aprendizagem dos conteúdos básicos . Na fase do desenvolvimento do programa, foram executados os processos necessários para atingir o objetivo final. Durante o levantamento de requisitos, levou-se em consideração os tipos de problemas de segurança da informação que deseja sanar os problemas de segurança ao desenvolver o software. A documentação será apoiada em modelos de referência, como usados UML e UMLEasy nativo do Netbeans, ambos com sua importância para trabalhar com a modelagem de sistemas. A plataforma que foi utilizada para o desenvolvimento do software, foi o Netbeans IDE, usando como linguagem de programação JAVA. REFERENCIAL TEÓRICO Informação

A informação é algo que se pode compreender segundo Dantas (2011) a informação propriamente dita são os dados que passam por algum tipo de processamento para serem utilizados de uma forma inteligível.

“Os dados compreendem a classe mais baixa da informação.” (DANTAS 2011, p. 9).

“A conhecimento é a informação cuja relevância, confiabilidade e importância foram avaliadas, e é obtido pela interpretação e integração de vários dados e informações para iniciar a construção de uma situação.” (DANTAS 2011, p. 9).

“A inteligência é a informação com oportunidade, ou seja, é a parte do conhecimento que habilita a tomada das melhores decisões [...]” (DANTAS 2011, p. 9).

Logo, segundo Dantas (2011, p. 10) Dados, informação, conhecimento ou inteligência, para a segurança da informação, tudo deve ser visto como informação.

“Hoje, a nova estrutura dos negócios corporativos é a tecnologia da informação, o seu sistema nervoso é a informação, e o seu ambiente, alcança, também, o ciberespaço.” (DANTAS, 2011, p. 6). Na Lei de Acesso à Informação (LAI) norma geral que rege a publicação e armazenamento de informações no âmbito da Administração Pública Federal, Lei 12.527, DE 18 DE NOVEMBRO DE 2011 no seu artigo 4º, inciso “I - informação: dados, processados ou não, que podem ser utilizados para produção e transmissão de conhecimento, contidos em qualquer meio, suporte ou formato;” A informação é de extrema importância para a organização e para seus negócios, assim como para seus concorrentes. Considerando que, cada vez mais, a realização de transações econômicas depende da informação, fica claro que sua indisponibilidade acarreta prejuízo financeiro e faz dela talvez o bem mais valioso da organização. Por isso, ela precisa ser preservada e bem gerenciada. (ALBERTO e PINOCHET, 2010, p. 29). Segurança da Informação “A segurança da informação é alcançada pela implementação de um conjunto adequado de controles, incluindo políticas, processos, procedimentos, estrutura organizacional e funções de software e hardware.” (NBR ISO/IEC 27002:2005, p. 4). Convém que o nível de proteção seja avaliado por meio da análise da confidencialidade, integridade e disponibilidade e quaisquer requisitos considerados para a informação. (NBR ISO/IEC 27002:2005, p. 25). Onde: • A integridade é a garantia da exatidão e completeza da informação e dos métodos de processamento (NBR ISO/IEC 27002:2005). • Disponibilidade é a garantia de que os usuários autorizados obtenham acesso à informação e aos ativos correspondentes sempre que necessário (NBR ISO/IEC 27002:2005). • A confidencialidade é a garantia de que a informação é acessível somente por pessoas autorizadas a terem acesso (NBR ISO/IEC 27002:2005). Em outra definição de Fontes (2008, p. 9) tem-se que “A política e demais regulamentos

Page 3: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2769

definem estratégias, regras, padrões e procedimentos que direcionarão todas as ações para atingirmos os objetivos de segurança da informação”. Política de Segurança da Informação

Traz a Norma ABNT ISO/IEC 27002(2005, p. 8) que política de segurança da informação tem como objetivo prover uma orientação e apoio da direção para a segurança da informação, de acordo com os requisitos do negócio e com as leis e regulamentações relevantes. É necessário às regras contidas na política de segurança segundo a NBR ISO/IEC 27002(2005, p. 8), que o mais alto nível a organização a defina e seja aprovada pela direção e estabeleça a abordagem da organização para gerenciar os objetivos de segurança da informação. A política de segurança define os direitos e as responsabilidades de cada um em relação à segurança dos recursos computacionais que utiliza e as penalidades as quais está sujeito, caso não a cumpra. É considerada como um importante mecanismo de segurança, tanto para as instituições como para os usuários, pois com ela é possível deixar claro o comportamento esperado de cada um. Desta forma, casos de mau comportamento, que estejam previstos na política, podem ser tratados de forma adequada pelas partes envolvidas. (CERT.br). Criptologia

A ciência que estuda a criptografia e criptoanálise é chamada criptologia.

“Num breve histórico a criptografia é tão antiga quanto a própria escrita, já estava presente no sistema de escrita hieroglífica dos egípcios. Os romanos utilizavam códigos secretos para comunicar planos de batalha.”(MONENO; PREIRA; CHIARAMONTE, 2005, p. 12). Abaixo, a figura 1, esquema das áreas da criptologia Figura 1: Áreas da Criptologia

Fonte: Bezerra, Malugutti e Rodrigues (2010, pag.

3). Uma das formas comumente usadas para iniciar o entendimento de cripto-grafia é a chamada “Cifra de Cesar” que permite a ocultação da mensagem original a ser transmitida deslocando, de forma circular para frente ou para trás, as letras que compõem a palavra formando outra totalmente diferente da original. (BURNETT e PAINE, 2002, p. 11).

“A criptografia converte dados legíveis em

algo sem sentido, com a capacidade de recuperar os dados originais a partir desses dados sem sentido.” (BURNETT e PAINE, 2002, p. 11). Para esclarecer a origem do termo Zochio (2016, p. 15) explica: “O termo “criptografia” vem do grego kruptós que significa “oculto” e grafos, que quer dizer “escrita”. A criptografia tem por objetivo de ocultar significado da mensagem e não a mensagem propriamente dita. Em 50 a. C, Júlio César usou sua famosa cifra de substituição para cifrar (criptografar) comunicações governamentais. Para compor seu texto cifrado, César alterou letras desviando-as em três posições; A se tornava D, B se tornava E, e etc. Às vezes, César reforçava seu método de criptografar mensagens substituindo letras latinas por gregas. O código de César é o único da antiguidade que é usado até hoje. Atualmente qualquer cifra baseada na substituição cíclica do alfabeto denomina-se de código de César. Apesar da sua simplicidade (ou exatamente devido a ela), esta cifra foi utilizada pelos oficiais sulistas na Guerra de Secessão americana e pelo exército russo em 1915. (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 12).

A figura 2 ilustra o esquema básico de criptografia: Figura 2 - Esquema geral de cifragem de texto

Fonte: MORENO; PEREIRA; CHIARAMONTE (2005, p. 205)

Page 4: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2770

Outra definição diz que “Pode-se classificar os algoritmos de criptografia através de tratamento dado as informações que serão processadas assim, tem-se os algoritmos de bloco e os algoritmos de fluxo.” (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 19).

A criptografia visa “assegurar o uso efetivo e adequado da criptografia para proteger a confidencialidade, autenticidade e/ou a integridade da informação.” (NBR ISO/IEC, 27002:2005, p. 43). Criptografia Simétrica

“Na criptografia de chave simétrica os processos de cifragem e decifragem são feitos com uma única chave, ou seja, tanto o remetente quanto o destinatário usam a mesma chave.” (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 28).

A criptografia simétrica ou criptografia de chave simétrica é utilizada para prover a segurança das informações. Nesta técnica, uma mesma chave é compartilhada entre o emissor e o receptor, sendo utilizada para cifrar e decifrar a mensagem. [...] Muda apenas a forma como são utilizadas as chaves. Quanto à mensagem, não contém qualquer parte da chave e não sofre alteração em seu tamanho. [...] Os algoritmos de ciframento e de deciframento são os mesmos. Assim, pode-se garantir a confidencialidade da mensagem, porque somente o emissor e o receptor têm conhecimento da chave secreta. (ALVARENGA, 2011, p. 115).

Figura 3: criptografia com cifra/chave simétrica.

Fonte: MORENO; PEREIRA; CHIARAMONTE (2005 p. 18.)

Moreno, Pereira e Chiaramonte (2005, p. 207) destacam como exemplos de algoritmos Simétricos ou de chave privada: Blowfish, Cast, DES, IDEA, RC2, RC4 e RC5. Criptografia Assimétrica

Também chamada de “criptografia de chaves públicas” foi inventada em 1976 por Whitfield Diffie e Martin Hellman a fim de resolver o problema da distribuição de chaves. Neste novo sistema, cada pessoa tem um par de chaves chamadas: chave pública e chave privada. A chave pública é divulgada enquanto que a chave privada é deixada em segredo. (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 28). Na criptografia assimétrica, existem duas chaves, a chave pública e a chave privada. A chave de

ciframento é publicada ou tornada acessível aos usuários, sem que haja quebra na segurança. Dessa forma, cada usuário tem uma chave de ciframento, de conhecimento público, e outra de deciframento, secreta. Se um usuário A deseja mandar uma mensagem para um usuário B, ele utiliza a chave de ciframento pública PB e envia a mensagem para B, este de posse de sua chave de deciframento secreta SB decodifica a mensagem. (GONZAGA, 2011, p. 115).

Abaixo, segue um exemplo de funcionamento de cifragem com algoritmo de criptografia com chave

assimétrica também chamada de chave pública. Figura 4: Criptografia de chave pública ou assimétrica.

Fonte: Internet ( https://www.gta.ufrj.br)

Page 5: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2771

Os autores Moreno, Pereira e Chiaramonte (2005, p. 206), citam como exemplos de algoritmos de criptografia de chave Pública e Certificação de Chaves: DSA, DH, RSA. Hash

Uma função de resumo ou “função hash” é descrita na “cartilha de segurança para Internet (CERT.br)” como um método criptográfico que, quando aplicado sobre uma informação, independente do tamanho que ela tenha, gera um resultado único e de tamanho fixo, chamado hash. Já Alvarenga (2011, p. 159) diz que é uma computação que pega uma entrada de tamanho variável e retorna uma string de comprimento fixo, a qual é chamada de valor hash (hash value).

Também pode ser visto como “função criptográfica que gera uma saída de tamanho fixo (geralmente 128 a 256 bits) independentemente do tamanho da entrada. A esta saída se denomina de hash da mensagem .” (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 32). Algoritmos Criptográficos

“Podem-se classificar os algoritmos de criptografia através tratamento dado as Informações que serão processadas assim, tem-se os algoritmos de bloco e os algoritmos de fluxo.” (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 19). O algoritmo de criptografia é uma sequência de procedimentos que envolvem uma matemática capaz de cifrar e decifrar dados sigilosos. O algoritmo pode ser executado por um computador, por um hardware dedicado e por um humano. Em todas as situações o que diferencia é a velocidade de execução e a probabilidade de erros. Existem vários algoritmos de criptografia, neste livro apresenta-se especificamente o DES, AES, RC5, IDEA e RSA, MD5 e SHA-1, pois são os mais utilizados atualmente, além do ALPOS (um algoritmo didático criado pelos autores). (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 17).

Ao longo da história vários algoritmos foram desenvolvidos e alguns desses melhorados,

como exemplo pode-se citar DES, AES, RC5, IDEA e RSA, MD5 e SHA-1, pois são muito utilizados atualmente Moreno, Pereira e Chiaramonte (2005, p. 17). Desses, o RSA é um dos mais utilizados, como já falado anteriormente neste trabalho, para transações financeiras. Algoritmo IDEA

“O algoritmo IDEA (International Data Encryption Algorithm) foi desenvolvido em 1990 na Suiça, por James L. Massey e Xueija Lai. É um algoritmo simétrico que utiliza uma chave de 128 bits. Originalmente, foi chamado de PES (Proposed Encryption Standard).” (ALVARENGA, 2010, p.30).

Um pouco de história a cerca da cifra de blocos IDEA: Um ano após o seu lançamento, em 1991, os pesquisadores Biham e Shamir demonstraram que o algoritmo era susceptível à criptoanálise diferencial; assim, os autores fizeram modificações substanciais e chamaram o novo algoritmo de IPES (Improved Proposed Encryption Standard). Em 1992 o IPES foi rebatizado, transformando-se no IDEA, sendo considerado um dos melhores algoritmos de bloco. O algoritmo é usado para cifrar/decifrar e, como é comum nas cifras de bloco, usa a confusão e a difusão para produzir o texto cifrado. O IDEA possui três grupos algébricos cujas operações são misturadas. Estas operações, que podem ser facilmente implementadas via hardware e / ou software, são: XOR Adição módulo 216 (adição ignorando qualquer overflow) Multiplicação módulo 216+1 (multiplicação ignorando qualquer overflow). (GONZAGA, 2011, p.144). Descrição do Algoritmo IDEA

“O IDEA possui chave secreta de 128 bits e tanto a entrada (texto legível) quanto a saída (texto ilegível) são de 64 bits, que consiste de duas fases diferentes: (i) a primeira é baseada na realização de 8 iterações utilizando subchaves distintas e (ii) uma transformação final.” (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 127).

Operações no IDEA

O algoritmo IDEA está baseado em três operações, todas sobre 16 bits conforme descrito a seguir no quadro 1:

Quadro 1 - Demonstração da cifragem Operação Ou exclusivo (XOR) sobre 16 bits

Soma mod 216, ou seja, somar dois valores de 16 bits desprezando o mais à esquerda, correspondente a 216.

+ Soma mod 216, ou seja, somar dois valores de 16 bits desprezando o mais à esquerda, correspondente a 216.

Page 6: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2772

Esta operação consiste em vários passos: 1. Multiplicar dois valores de 16 bits obtendo um valor que chamaremos de Z, sendo

que antes de multiplicar, se um desses valores for 0 deve ser alterado para 216. 2. Se o resultado da operação acima for 216, então o resultado final da operação

é 0 , caso contrário é o valor obtido em 2 (Z mod (216 + 1)). 3. Calcular Z mod (216 + 1), ou seja, o resto da divisão de Z por 216 + 1.

Fonte: MORENO; PEREIRA; CHIARAMONTE (2005, p. 127). A figura 5, logo abaixo, demonstra o esquema da interação do algoritmo para facilitar o

entendimento. Figura 5: Exposição do algoritmo IDEA em diagrama de blocos

Fonte: internete (www.numaboa.net.br)

Page 7: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2773

No quadro seguinte é descrito das iterações de ciframento e deciframento de cada bloco de dados com as chaves correspondentes a cada parte como visto anteriormente no diagrama de blocos.

Quadro 2 - Descrições dos processos do IDEA

Em cada rodada, a sequência de eventos é a seguinte: 1. Multiplicação de B1 pelo primeiro sub-bloco da chave K1. 2. Adição de B2 com o segundo sub-bloco da chave K2. 3. Adição de B3 com o terceiro sub-bloco da chave K3. 4. Multiplicação de B4 pelo quarto sub-bloco da chave K4. 5. XOR entre os resultados obtidos nas etapas (1) e (3). 6. XOR entre s resultados obtidos nas etapas (2) e (4). 7. Multiplicação do resultado da etapa (5) pelo quinto sub-bloco da chave K5 8. Adição dos resultados das etapas (6) e (7). 9. Multiplicação do resultado da etapa (8) pelo sexto sub-bloco da chave K6. 10. Adição dos resultados das etapas (7) e (9). 11. XOR entre os resultados obtidos nas etapas (1) e (9). 12. XOR entre os resultados obtidos nas etapas (3) e (9). 13. XOR entre os resultados obtidos nas etapas (2) e (10). 14. XOR entre os resultados obtidos nas etapas (4) e (10). A saída da rodada são os quatro sub-blocos resultantes das etapas (11), (13), (12) e (14). Exceto na última rodada, os sub-blocos (13) e (12) trocam de lugar e esta nova sequência de sub-blocos será a entrada para a próxima rodada. Após a oitava rodada, a saída final é transformada com: 1. Multiplicação de B1 pelo primeiro sub-bloco da chave K1. 2. Adição de B2 com o segundo sub-bloco da chave K2. 3. Adição de B3 com o terceiro sub-bloco da chave K3. 4. Multiplicação de B4 pelo quarto sub-bloco da chave K4.

Fonte: (GONZAGA, 2011, p.145).

64 BITS DO TEXTO EM CLARO : X Quadro 3 - expõe iterações dos blocos de chaves com os blocos de texto

Quadro 3 – Iteração da Chave com o Bloco de Dados

X4 X3 X2 X1

.

.

Z1

Z6 1 Iteração 1

W13 W14 W12 W11

.

.

Z7

Z12 2 Iteração 2

W24 W23 W22 W21

W72 W73 W74 W71

.

.

Z43

Z48 3 Iteração 8 W84 W82 W81 W83

.

.

Z49

Z52 4 Transformação 64 bits do texto cifrado Y

Page 8: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2774

Geração de Chaves do IDEA Como o mesmo algoritmo é utilizado tanto na

criptografia quanto na descriptografar, o que define qual a operação a ser realizada é a forma de geração das subchaves.

Para a criptografia são geradas 52 subchaves de 16 bits a partir da chave secreta de 128 bits (chamadas em forma breve de K). A primeira subchave (K1) é gerada considerando os 16 bits mais significativos de K, a segunda (K2) é gerada considerando os próximos 16 bits, e assim são geradas as subchaves até K8 que será os 16 bits menos significativos de K.

Como a cada 8 subchaves geradas a próxima subchave inicia-se com um deslocamento de 25 bits a partir do início da chave K, a 9ª subchave é formada por 16 bits a partir do 25º bit a partir da direita de K, a K10 é formada pelos 16 próximos bits, e assim até gerar K14. Seguindo o mesmo raciocínio, a 15ª subchave (K15) será

formada pelos 7 bits menos significativos de K e para completá-la são usados os primeiros 9 bits (os 9 bits mais significativos de K).

Lembrando que a cada 8 subchaves a próxima chave inicia-se acrescentando um deslocamento de 25 bits à chave inicial K, a K17 inicia-se a partir do 50º bit a partir da direita de K. Dessa forma são geradas as primeiras 48 subchaves.

A subchave K49 inicia-se a partir do 22º bit a partir da direita de K, a K50 é formada pelos próximos 16 bits, e assim até formar a K52. (MORENO; PEREIRA; CHIARAMONTE, 2005, p. 128).

Observe o quadro 4, a seguir, ele descreve uma visão mais direta de cada processo embaralhamento das partes da chave com os blocos de dados binários correspondentes em cada momento

. Quadro 4 - Processo de Rotação a cada 25 bits na Geração das Chaves

Chave de 128 bits

Bloco Z1 ⇒ 16 bits Bloco Z2 ⇒ 16 bits Bloco Z3 ⇒ 16 bits . . . Bloco Z8 ⇒ 16 bits

Rotação de 25 bits na chave

Chave após a 1a Rotação

Bloco Z9 ⇒ 16 bits Bloco Z10 ⇒ 16 bits Bloco Z11 ⇒ 16 bits . . . Bloco Z16 ⇒ 16 bits

Rotação de 25 bits na chave . . .

Bloco Z17 ⇒ 16 bits . . .

Bloco Z52 ⇒ 16 bits (Aula de segurança de Dados do Professor Rael)

Exemplo de chave do IDEA 1010100011010101111100111001001001000111111011000101100111011001 0000000010111000000011001000111001111011000000010000100111000101

1010100011010101111100111001001001000111111011000101100111011001 1010100011010101 1111001110010010 0100011111101100 0101100111011001

43221 65354 18412 23001 Z1 Z2 Z3 Z4

0000000010111000000011001000111001111011000000010000100111000101 000000001011100 0000110010001110 0111101100000001 0000100111000101

184 3214 31489 2501 Z5 Z6 Z7 Z8

Page 9: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2775

Exemplo de chaves para a primeira Iteração; a) Para Cifração.

43221 65354 18412 23001 184 3214 Z1 Z2 Z3 Z4 Z5 Z6

b) Para Decifração

43103 - 65354 - 18412 28117 13891 56830 (Z1)-1 - Z2 - Z3 (Z4)-1 (Z5)-1 (Z6)-1

(Aula de segurança de Dados do Professor Rael) Orientação a objetos

“O conceito da orientação por objetos (OO ou O-O, do inglês object-oriented) baseia-se de fato numa nova forma de analisar o mundo.” (SILVA e VIEIRA, p. 86).

Para Santos (2001, p. 24) o paradigma de orientação a objetos baseia-se na criação de modelos que representam entidades, pessoas, processos etc. do mundo real, de forma simplificada.

Outra definição conceitual traz: [...] A abordagem seguida "reproduz" a forma como o ser humano se apercebe e expressa a realidade que o rodeia. Ele classifica e subdivide o mundo em diferentes objetos, com base nas diferenças e semelhanças existentes ao nível das características e comportamento dos mesmos objetos. As técnicas orientadas por objetos identificam e definem cada objeto de modo a

reutilizá-lo, da mesma forma que o ser humano acumula conhecimento com base no previamente adquirido. [...] Nas abordagens orientadas por objetos, a perspectiva de modelação dos sistemas muda, uma vez que o mesmo conceito base é utilizado ao longo de todas as fases do processo, promovendo a reutilização e o encapsulamento da informação, e facilitando a manutenção. (SILVA; VIDEIRA, 2001, p. 86 e 87). O Conceito de Objeto “O modelo de objetos representa elementos que encontramos no mundo real. Esses elementos podem ser de vários tipos, como entidades físicas (aviões, robôs, etc.) e abstratas (listas, pilhas, filas, etc.).” (RUBIRA e BRITO, 2009, p. 12).

A figura a seguir descreve a objetos, classes, atributos e operação.

Figura 6 – descreve exemplos de Objetos, classes, atributos e operações.

Fonte: linhadecodigo.com.br/artigo/1293

O Conceito de Classe Os autores Rubira e Brito (2009, p. 13) descrevem: classe é a descrição de um molde que especifica as propriedades e o comportamento relativo a um conjunto de objetos similares. Todo objeto é instância de apenas uma classe.

A figura 7 - Representa uma Classe e seus objetos.

Figura 7 – Classe e objetos.

Page 10: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2776

Fontes: Os autores.

Atributos Para Cardoso (2003, p.7), atributos e métodos são definidos da seguinte forma: ”Atributos: é onde são armazenados os dados do objeto. Como no caso da Classe carro, podemos exemplificar a velocidade, quantidades de passageiros, entre outras especificações”.

“Os atributos são propriedades nomeadas de um objeto que indicam os valores possíveis que esse atributo pode assumir ao longo do tempo; o estado de um objeto é definido pelo valor dos seus atributos.” (SILVA; VIDEIRA, 2001, p. 91).

Encapsulamento

Considerado por Goldman, Kon e Silva (2006, p. 115) um dos conceitos principais de orientação a objetos, encapsulamento, através do qual, tanto os atributos quanto a implementação dos métodos de uma certa classe não são visíveis ao usuário da classe. Encapsulamento da informação é o processo de "esconder" todos os detalhes de um objeto que não contribuem para as suas características essenciais nem para a disponibilização de funcionalidades para o seu exterior. Pode ainda ser encarado como a localização de funcionalidades numa única abstração auto-contida, que esconde a respectiva implementação e decisões de desenho, através da disponibilização de uma interface pública. O conjunto de operações que são acessíveis do exterior constitui a interface do objeto. Esta característica permite a criação de objetos estáveis e reutilizáveis, reproduzindo o mundo real de forma correta. (SILVA; VIDEIRA, 2001, p. 91). Abstração Para Silva e Videira (2001, p. 89) Abstração é a representação concisa duma ideia ou objeto mais complexa, incidindo sobre as características essenciais do objeto. Abstração é definida como um mecanismo através do qual nós observamos o domínio de um problema e focamos nos elementos que são relevantes para

uma aplicação específica em um determinado contexto de uso, ignorando todos os pontos irrelevantes. Ela remove certas distinções de tal forma que seja possível ver as coisas comuns entre diversas entidades. Em outras palavras, uma abstração descreve as características essenciais de um grupo de objetos que o distingue de todos os outros tipos existentes. Dessa forma, uma abstração proporciona limites conceituais bem definidos, com relação à perspectiva de um observador em particular. (RUBIRA e BRITO, 2009, p. 16). Tipos de Relacionamentos

As relações ou relacionamentos “são conceitos gerais que apresentam uma sintaxe e uma semântica bem definida, e que permite o estabelecimento de interde-pendências entre os elementos [...].” (SILVA e VIDEIRA, Portugal, 2001, p. 122). Podem ser de três tipos: Dependência, Generalização e Associação às quais serão descritas logo abaixo.

Relação de dependência “ou simplesmente dependência, indica que a alteração na especificação de um elemento pode afetar outro elemento que a usa, mas não necessariamente o oposto.” (SILVA e VIDEIRA, Portugal, 2001, p. 169).

Relação de generalização “ou simplesmente generalização, é uma relação entre um elemento geral [...] ( superclasse, super-casoutilização, super-pacote) e um elemento mais específico [...]subclasse, sub-caso-utilização, sub-pacote).” (SILVA e VIDEIRA, Portugal, 2001, p. 170).

E Relação de Associação “é uma relação estrutural que especifica que objetos de uma classe estão ligados à objetos de outra.” (SILVA; VIDEIRA, Portugal, 2001, p. 171). Herança

Para Santos (2009, p. 182 e 183) ‘o mecanismo de herança’ [...] permite que criemos

Page 11: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2777

uma classe usando outra como base e descrevendo ou implementando as diferenças e adições da classe usada como base, reutilizando os campos e métodos não-privados da classe base. O

mecanismo de herança é o mais apropriado para criar relações é-um-tipo-de entre classes [...]. (grifo nosso)

A seguir vê-se figura 8 que apresenta o conceito de herança. Figura 8 - Modelo que exemplifica a hierarquia de herança

Fonte: DEITEL e DEITEL (2010, p. 280).

A herança é outra forma de abstração

utilizada na orientação a objetos. Pode herdar as características e o comportamento comuns a um conjunto de objetos que podem se abstraídos em uma classe. (BEZERRA e EDUARDO, 2003, UML, p. 10). Agregação Descrita por Silva e Videira (Portugal, 2001, p. 97) agregação como “a conhecida relação entre o todo e as partes [...]; um exemplo possível é a relação “uma empresa tem empregados”.” Em outra definição tem-se “agregação é uma relação “parte-todo” ou “uma-parte-de” na qual os objetos representando os componentes de algo são associados com um objeto representando a junção deles [...]”. (MAZZOLA, Engenharia de Software, cap. 9). Composição

Para descrever tal parâmetro cita-se a descrição abaixo que traz composição: [...] Forma de agregação em que a relação de pertença é forte e com tempos coincidentes; o objeto agregador é responsável pela criação e destruição do objeto que entra na sua composição; uma concretização desta relação é dizer que "o corpo humano tem perna". (SILVA e VIDEIRA, Portugal, 2001, p. 97). Dependência

É apresentada como “relação em que uma mudança de estado num objeto (ocorrida pela recepção de uma mensagem) pode implicar o envio de uma mensagem a outro objeto;” (SILVA; VIDEIRA, Portugal, 2001, p. 97). Para exemplificar, Silva e Videira (2001) colocam, para facilitar o entendimento, como “um automóvel, para andar, precisa de se abastecer na bomba de gasolina. ” .

Engenharia de Software Para entendermos a Engenharia de

Software faz-se necessário relembrar o conceito básico de software. Para Sommerville (2011, p. 14, grifo nosso) são programas de computador e documentação associada. Produtos de software podem ser desenvolvidos para um cliente específico ou para o mercado em geral. A partir daí tem o seguinte conceito a cerca de engenharia de software.

Ainda observando os conceitos expostos por Sommerville (2011, p. 19) é uma disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção, quando o sistema já está sendo usado. E tem como “principais atividades a especificação de software, desenvolvimento de software, validação de software e evolução de software.” (SOMMERVILLE, 2011, p. 14).

Uma das definições mais utilizadas hoje em dia foi proposta pelo IEEE em 1993, e defende que "a Engenharia de Software é a aplicação de um processo sistemático, disciplinado, e quantificado ao desenvolvimento, operação e manutenção de software; ou seja, a Engenharia de Software é a aplicação de técnicas de engenharia ao software". [...] podem ser agrupadas em três grandes fases, tendo em conta que o seu objetivo o desenvolvimento e operação de um produto: concepção, implementação e manutenção. (SILVA; VIDEIRA, Portugal, 2001, p. 24). Modelo de Desenvolvimento de Software

“Em qualquer desenvolvimento de sistemas de informação é necessário definir a intervenção e conjugar corretamente as interações entre as pessoas, o processo aplicado, as características do

Page 12: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2778

produto e o projeto [...]”. (SILVA e VIDEIRA, Portugal, 2001, p. 30).

São tidos como “O resultado de um esforço de desenvolvimento deve resultar normalmente num produto. [...] corresponde ao conjunto de atividades e um ordenamento destas de modo a que o produto desejado seja obtido. [...]”. (MAZZOLA, p. 11) Modelos Ágeis para Desenvolvimento de Software

Atualmente, segundo Sommerville (2011, p. 38), [...] as empresas operam em um ambiente global, com mudanças rápidas. Por isso, afirma Sommerville (2011) precisam responder a novas oportunidades e novos mercados, a mudanças nas condições econômicas e ao surgimento de produtos e serviços concorrentes.

Métodos ágeis são métodos de desenvolvimento incremental em que os incrementos são pequenos e, normalmente, as novas versões do sistema são criadas e disponibilizadas aos clientes a cada duas ou três semanas. Elas envolvem os clientes no processo de desenvolvimento para obter feedback rápido sobre a evolução dos requisitos. (SOMMERVILLE, 2011, p. 39). Método Programação Extrema (XP – Extreme Programming)

O método XP como é chamado, talvez, o mais conhecido dos “métodos ágeis. [...] pois a abordagem foi desenvolvida para impulsionar práticas reconhecidamente boas, como o desenvolvimento iterativo, a níveis ‘extremos’.” (SOMMERVILLE, 2011, p. 44). Linguagem de Programação JAVA

Antes de ingressar no entendimento da linguagem JAVA é necessário saber-se que para um computador ter alguma utilidade, ele deve executar um programa que tenha uma finalidade específica (EVARISTO, p. 5). Tais programas são classificados conforme os níveis ou sua proximidade com a linguagem humana, ou seja Para que haja a possibilidade da comunicação do homem com o computador, e necessário que as palavras da linguagem escrita sejam traduzidas para a linguagem de maquina e vice-versa. Para que isto seja possível, e necessário que se estabeleça qual a sequencia de bit's que

corresponde a cada caractere usado n linguagem escrita. Ou seja, e necessário que se estabeleça uma codificação em sequencia de bit's para cada um dos caracteres. (EVARISTO, p. 5)

Acerca da história do Java segundo Caelum (Caelum.com.br), traz a Sun como criadora da equipe (conhecido como Green Team) para desenvolver inovações tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. E também traz que na história da linguagem de programação JAVA. O time voltou com a ideia de criar um interpretador (já era uma máquina virtual, veremos o que é isso mais a frente) para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo. [...] Hoje, sabemos que o Java domina o mercado de aplicações para celulares com mais de 2.5 bilhões de dispositivos compatíveis, porém em 1994 ainda era muito cedo para isso. (CAELUM, fj11, p. 4). Sob uma visão mais técnica encontra-se a descrição no sitio ORACLE.com Java é uma linguagem de programação e plataforma computacional usado pela primeira vez pela empresa Sun Microsystems em 1995. Existem muitas aplicações e websites que não funcionarão, a menos que tenha instalado o java na máquina. O java e uma linguagem versátil sendo usado em uma variedade de hardwares diferentes, e rápido, seguro e confiável. O java está em todos os lugares. (ORACLE.com, 2017).

Portanto “Hoje, Java não só permeia a Internet, mas também é a força invisível por trás de muitas das aplicações e dispositivos que alimentam nossas vidas do dia a dia. Desde telefones celulares até dispositivos portáteis [...].” (http://www.java.com/en/javahistory/, 29/11/2017).

A linguagem de programação JAVA é direcionada ao paradigma de orientação a objeto, este é seu foco primordial. “Sua aplicação roda sem nenhum envolvimento como sistema operacional. Sempre conversando apenas com a Java VirtualMachine (JVM).” Máquina Virtual (CAELUM, fj11, p. 6). Independentemente do sistema operacional você utiliza “Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações, etc.” (idem). Como apresentado na figura 8 a seguir:

Figura 10 - Interação Aplicação JAVA e Sistema Operacional

Fonte: Internet

Java Code (.Java)

Javac compilador

Byte Code (class)

JVM Linux Windons JVM JVM Outro

Page 13: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2779

Será da linguagem de programação Java,

mais especificamente, retirado o código do algoritmo IDEA, visto que faza parte das “bibliotecas de comunicação criptográfica disponíveis no JDK usam a arquitetura do provedor JCA, mas são descritas em outro lugar.”(docs.ORACLE.com) estão disponíveis no escopo da linguagem, dentre elas está a “o Java Secure Socket Extension (JSSE) fornece acesso a Secure Socket Layer (SSL) e implementações Transport Layer Security (TLS - Segurança da Camada de Transporte), que serão utilizadas no desenvolvimento do software, resultante deste trabalho. UML - Linguagem Modelada Unificada No conceito de Silva e Videira (2001, p. 117) O UML é uma linguagem para especificação, construção, visualização e documentação de artefatos de um sistema de software. Uma das ferramentas mais utilizadas atualmente no desenvolvimento de software com orientação a objeto (idem).

Na abordagem histórica: Na primeira metade da década de 1990 assistiu-se a uma proliferação de métodos e notações para modelação segundo a abordagem orientado por objetos (fase da fragmentação). Por essa altura percebeu-se a necessidade da existência de uma linguagem que viesse a tornar-se uma norma, que

fosse aceite e utilizada quer pela indústria, quer pelos ambientes académicos e de investigação. Surgiram, entretanto, alguns esforços nesse sentido de normalização, sendo que o UML apareceu em 1996 melhor posicionado como a linguagem “unificadora” de notações, diagramas, e formas de representação existentes em diferentes métodos [...].(SILVA; VIDEIRA, 2001, p. 119). Atualmente assiste-se à divulgação e adopção generalizada do UML como “a” linguagem de modelação de software segundo a abordagem orientada por objetos. [...]. Uma das preocupações mais significativos no desenho e na especificação do UML foi torná-lo extensível e aberto a futuras evoluções, que inevitavelmente irão ocorrer. O objetivo é que seja possível estender o UML sem ser necessário redefinir o seu núcleo principal. (SILVA; VIDEIRA, 2001, p. 120 e 121).

Diagrama de Casos de Uso O diagrama de casos de uso (DCU) corresponde a uma visão externa do sistema e representa graficamente os atores, casos de uso e relacionamentos entre esses elementos. O diagrama de casos de uso tem o objetivo de ilustrar em um nível alto de abstração quais os elementos externos de um sistema e as maneiras segundo as quais eles as utilizam. (BEZERRA e EDUARDO, 2003 UML, p.57).

A figura 10 ilustra um modelo de diagrama de casos de uso. Figura 10 – Diagrama de Casos de Uso

Fonte: Os autores

Diagrama de Classe A aplicação externa de um sistema orientado a objetos é fornecida por meio de

contribuição entre objetos que colaboram uns com os outros para produzir os resultados visíveis no desenvolvimento do sistema. Essa contribuição

Page 14: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2780

permite compreender como o sistema está estruturado internamente (BEZERRA, 2007). A ligação entre esses objetos é representada por um diagrama de classe. No qual são representadas por classes e associações entre as mesmas é um diagrama rico em termos de registro e importante para nível de analise. Diagrama de Sequência

O diagrama de sequência exibe o aspecto do modelo que salienta o comportamento dos objetos em um sistema, incluindo suas operações, interações, colaborações, histórias de estado e sequência temporal de mensagem e representação explícita de atividades de operações(FURLAN,1998). O diagrama sequência ajuda para destacar a ordenação temporal das mensagens.

Figura 11 - Diagrama de Sequência

Fonte: Os autores

Page 15: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2781

ANÁLISE DO PROGRAMA Documento de Visão Finalidade A finalidade do documento é adquirir, analisar e definir as características e necessidades desempenho do software cryptoarq . Ele se concentra nos recursos necessários aos envolvidos e aos usuários–alvo e nas necessidades que são precisas . Definições , Acrônicos e Abreviações a. JDK –Java Development Kit. b. cryptoarq – Programa de criptográfia. c. Astah - Astah Professional é uma ferramenta de designe de sistema que suporta UML(Unified Modeling Language) d. TI – Tecnologia da Informação.

e. IDEA – (Algoritmo de criptografia de dados internacional) Referências

a. Notas de aula;

b. Deitel, H. M: Java, como programar, Porto Alegre, Bookman, 2003.

c. UML

Descrição do Problema O problema

O acesso à informação por pessoas não autorizados. A perda da integridade e confidencialidade das informações.

Afeta O usuário proprietário das informações.

Cujo impacto é Roubo, fraude, extorsão cujo o conteúdo da informação e muito importante e sigilosas.

Uma boa solução seria Utilizar um programa de criptografia que garanta que apenas o proprietário da informação possua o domínio sobre o conteúdo do arquivo.

Sentença de Posição do Produto Para Qualquer pessoa que armazena informações importantes em seu

computador ou transmite arquivos. Que Necessita garantir a confidencialidade das informações e a integridade

dos arquivos. O cryptoarq É um software Que Criptografar, descriptografar arquivos. Diferente de Programas que não garantem a confidencialidade em situação de utilização

transmissão de arquivos em chaves. Nosso produto Garantirá a confidencialidade e a integridade das informações.

Fonte: os autores Escopo do Produto O software tem por finalidade a codificação de arquivo para proteger o conteúdo que possa ser transmitido via Redes ou armazenado em dispositivos móveis que necessitem de confidencialidade e integridade das informações. As funções são criptografar e descriptografar. Para o processamento de criptografar e descriptografar será utilizada o algoritmo de cifra simétrica IDEA(International Data Encryption Algorithm) associado ao HASH, em SHA-1, da senha do usuário para a cifragem dos dados.

O software é compatível com qualquer computador que possua instalado JVM, ou seja, possua um JRE – Java Runtime Environment instalado. Descrição do Envolvidos e dos Clientes Demografia do mercado Nos últimos anos, houve um crescimento no desenvolvimento de novas tecnologias em todas atuações de negócios. Com este crescimento, mais pessoas estão envolvidas direta e indiretamente, e isto teve uma necessidade de refinar a segurança da informação.

Page 16: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2782

Resumo dos Envolvidos Nome Descrição Responsabilidade

Desenvolvedor e analista

- Responsável pelo desenvolvimento do software , pelos métodos criptográficos a serem implementados na codificação dos arquivos.

- Documenta o software desenvolvido. - Assegura as correções do software. - Recolhe sugestões dos usuários para melhoria do software.

Fonte: os autores Resumo dos Clientes

Nome Descrição Responsabilidade Envolvimento Usuário Consumidor final

criptarq. - Selecionar o arquivo a ser criptografado ou descriptografado

Não se aplica.

Fonte: os autores Ambiente dos Clientes O usuário precisa ter instalado o JRE(JVM) em seu sistema. O programa não necessita de interação com outro sistema. Perfis dos Envolvidos Desenvolvedor e Analista

Descrição Pessoa que analisa, desenvolve e documenta as funcionalidades, codificação e teste do software.

Tipo Especialista.

Responsabilidades Estar apto a analisar e desenvolver os requisitos exigidos, testar o software com suas respectivas funcionalidade para garantir um

bom desempenho. Critérios de sucesso Codificação, descodificação certificará a segurança da informação.

Envolvimento Analise de requisitos e/ou desenvolvimento. Produtos Liberados O software.

Comentários /Problemas Inserção de dados de maneira incorreta. Fonte: os autores

Usuário Tipo Usuário final.

Responsabilidade Usuário comum das funções do software. Critérios de sucesso Capacidade de introduzir dados válidos no sistema.

Envolvimento Interatividade com o sistema. Produtos liberados Nenhum.

Comentários/Problemas Inserção de dados incompatíveis. Fonte: os autores Principais necessidades dos Envolvidos ou dos Clien tes

Necessidades Prioridade Preocupação Solução Atual

Soluções Propostas

Criptografar arquivos

Alta - Garantir ao cliente a confidencialidade,

integridade desses ativos.

Nenhuma Desenvolver de software para

criptografia de dados para restringir o acesso

somente a pessoas autorizadas.

Fonte: os autores

Page 17: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2783

Restrições Para a devida execução do cryptoArq, é necessário a instalação do JRE no sistema operacional microsft Windows das versões lançadas no mercado a partir do ano 2012. Especificação dos Requisitos ER. aF. CryptoArq.001

Quadro 5 - Quadro de Especificação de Requisito ER. aF. CryptoArq.001. ER aF. cryptArq.001 Selecionar arquivo

Descrição Usuário deverá selecionar o arquivo a ser criptografado/descriptografado.

Descrição do Risco Risco Prioridade Não inserir senha corretamente Médio Médio

Fonte: os autores ER. aF. CryptoArq.002 Quadro 6 - Quadro de Especificação de Requisito ER. aF. CryptoArq.002

ER. aF. Crypto Arq.002 Digitar senha

Descrição O software pede que a senha seja inserida para que o software encripar o arquivo.

Descrição do Risco Risco Prioridade

Escolha de senha fraca Alta Alta

Escolher senha bem elaboradas que contemplem letras maiúsculas e

minúsculas e números com tamaanho mínimo de 9 caracteres.

Baixo Alta

Usuário Envolvido Usuário do software.

aF. CryptoArq.003

Quadro 7 - Quadro de Especificação de Requisito ER. aF. CryptoArq.003 ER. aF. Crypto Arq.003 Criptografar

Descrição O programa executará o processo de criptografia do arquivo.

Descrição do Risco Risco Prioridade

Selecionar o arquivo ou pasta diferente do

desejado. Baixo Baixa

Não gerar o arquivo criptografado após

processamento. Alto Alta

Usuário Envolvido Usuário Final.

Fonte: os autores ER. aF. CryptoArq.004 Quadro 8 - Quadro de Especificação do Requisito ER. aF. cryptArq. 004

ER. aF. CryptoArq .003 Descriptografar

Descrição O programa executará o processo de criptografia do arquivo.

Descrição do Risco Risco Prioridade

Selecionar o arquivo ou pasta diferente do desejado. Baixo Baixa

Não gerar o arquivo criptografado após processamento.

Alto Alta

Page 18: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2784

Usuário Envolvido Usuário Final.

Fonte: os autores ER. aF. CryptoArq.005 Quadro 9 – Quadro de Especificação do Requisito ER. aF. crytArq.005 ER. aF. CryptoArq .005 Gerar Hash

Descrição O programa deverá ser capaz de garar o hash de um arquivo para posterior Decriptografar.

Descrição do Risco Risco Prioridade

Não se aplica - -

Usuário Envolvido Usuário Final.

Fonte: os autores Descrição dos Casos de Uso e Atores Casos de Uso Selecionar arquivo

Este caso de uso será responsável pela captação do arquivo a ser criptografado/Descriptografado ou gerar Hash. Informar senha Este caso uso garante que só quem tenha a senha possa acessar o aquivo. Criptografar Este caso de uso é responsável por executar o processo de encritar um arquivo previamente selecionado pelo usuário. Descriptografar

Este caso de uso é responsável por executar o processo de descriptografar do arquivo previamente criptografado pelo software. Gerar Hash do Arquivo Este caso de uso possibilita a geração do código hash do arquivo criptografado. Verificar Hash do Arquivo O caso de uso tratado gera o código hash do arquivo descriptografado. Descrição dos Atores Usuário Este ator é qualquer usuário que desejar utilizar o Programa. Será responsável por indicar o(s) arquivo(s) a ser(em) criptografado(s) ou descriptografado(s).

Diagrama geral de caso de uso Figura 12 – Diagrama Geral de Casos de Usos.

Fonte: os autores Detalhamento dos Casos de Uso UC [01] – Selecionar Arquivo

Quadro 10 – Fluxo de Eventos de caso de Uso Selecionar Arquivo . Nome da Use Case Selecionar o arquivo

Page 19: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2785

Descrição Selecionar um arquivo para o processo inicial de criptografar ou Descriptografar.

Requisitos Associados ER. aF. CryptoArq 001, ER. aF.cryptoArq 002, ER. aF.cryptoArq 003 , ER. aF.cryptoArq 004

Pré Condições O programa deve estar aberto na tela principal. O arquivo deve estar armazenado em algum local para o inicio

do processamento. Atores O programa deverá armazenar e gerar o arquivo sem falhas.

Fluxo Principal

Ações Recebid as Ações Realizad as

1. O usuário inicia o programa. 2. O programa exibe as funcionalidades de criptografar de arquivo e descriptografar arquivo.

3. O usuário seleciona a função arquivo para executar a função de criptografar.

4. O programa exibe o campo Selecionar arquivo para que ele seja processado.

5. O usuário seleciona arquivo para o processamento que selecionou.

6. O arquivo e salvo na memória mostra o caminho do arquivo na tela.

Fonte: os autores UC [02] – Criptografar Arquivo

Quadro 11 – Fluxo de eventos do caso de Uso Criptografar Arquivo. Nome de Use Case Criptografar Arquivo

Descrição O programa recebe o arquivo, o ele receberá uma senha pessoal para a confidencialidade e a integridade das informações contidas nos arquivos ,para a execução da criptografia de arquivo.

Requisitos Associados ER. aF.cryptoarq.002, ER. aF. Cryptoarq.001, ER. aF. Cryptoarq.005 Pré Condições O programa deve estar aberto na tela principal

O arquivo deve estar armazenado em algum local da máquina para o inicio do processamento de criptografia de arquivo

Pós Condições Arquivo criptografado Atores Usuários

Fluxo Principal Ações Recebida s Ações Realizad as

1. O usuário com o programa inicializado. 2. O exibe as funcionalidades de criptografia de arquivo e de descriptografar de arquivo.

3. O usuário seleciona a operação “arquivo” para executar a função de criptografar .

4. O programa exibe a tela “abrir” para que o usuário escolha o arquivo a ser criptografado.

5. O usuário seleciona um único arquivo e confirma. 6. O programa volta á tela principal e exibe a operação” Arquivo Criptografado”

7. Criar Chave e permitir criptografar o arquivo 8. O programa exibe a tela de exerção de senha já criada

9. O usuário irformar a senha 10. A tela de OK de arquivo criptografado Fonte: os autores UC [04] – Descriptografar Arquivo Quadro 12 – Fluxo de Eventos do Caso de Uso Descriptografar Arquivo.

Nome da Use Case Descriptografar Arquivo

Descrição É a realizada o processo inverso de criptografar, para recuperar o arquivo criptografado.

Requisitos Associados ER. aF. CryptArq 003, ER. aF.cryptArq 004, ER. aF.cryptArq 005 , ER. aF.cryptArq 006

Pré Condições Incluir um arquivo criptografado

Pós Condições O programa deve apresentar o arquivo descriptografado.

Atores Usuário.

Fluxo Principal

Page 20: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2786

Ações Recebidas Ações Realizadas

1. O usuário com o programa inicializado. 2. O programa exibe as funcionalidades de criptografia de arquivo e descriptografia de arquivo

3. O usuário seleciona o arquivo que foi criptografado

4. O programa exibe a tela “Abrir” para que o usuário escolha a pasta a ser processada e descriptografada.

5. O usuário seleciona um único arquivo a ser descriptografado e confirmar.

6. O programa volta a tela principal

7. Pede a senha pessoal para descriptografar 8. O programa exerce o processo descriptorafar e exibe “OK” descriptografado com sucesso.

Fluxo Exceções

Ações Recebidas Ações Realizadas

1. O usuário deixa em branco ou insere a senha incorreta.

2. O programa exibe mensagem “Senha incorreta”

3. O usuário seleciona a operação 4. O programa volta ao passo 6 do fluxo principal

5. O usuário , no ato de inserção da senha , cancela ou confirma a operação sem inserir uma senha

6. O programa exibe a mensagem :”Senha incorreta”

7. O usuário seleciona a operação “0k” 8. O programa volta ao processo do passo 6 do fluxo principal.

Fonte: os autores Diagrama Geral de Estado

Figura 13 – diagrama Geral de Estado

Fonte: os autores Classes de Análise Detalhamento das Classes de Análise Classe de Fronteira – Tela Principal Cryptoarq Interação do programa como os atores. Responsável por apresentar as opções criptografar e descriptografar arquivos.

Classe de Controle Arquivo Responsável pelo o controle da lógica de execução do programa por realizar os processos criptografar, descriptorafar, gerar hash e verificar hash, para isso será utilizado a o algoritmo SHA-1. Diagrama Geral de Classe

Page 21: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2787

Figura 14 - Diagrama de Classe Arquivo.

Fonte: os autores

Diagrama de classe com Fronteira e Entidade Figura 16 – Diagrama de classes de Análise com Fronteira e Entidades

Fonte: os autores

Diagrama de Sequência Diagrama de Sequência Criptografar arquivo

Figura 15 – Diagrama de sequência criptografar arquivo

Page 22: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2788

Fonte: os autores

Diagrama de Sequência Descriptografar arquivo

Figura 16– Diagrama de sequência descriptografar arquivo

Fonte: os autores

CONCLUSÃO O uso da tecnologia da informação vem sendo aumentada gradualmente com o passar dos anos sendo usado não em ambientes profissionais mais em atividades pessoais, tendo em vista a segurança de dados e interesses individuais de mantê-las seguras. Visto então a necessidade atual, apresenta-se como uma das soluções para usuários, o Cryptoarq001. A referida ferramenta foi desenvolvida com a linguagem de programação JAVA que é, por sua vez, bastante utilizada nos dias de hoje e, com isso, foi utilizado um algoritmo para verificar a integridade das informações, podendo assegurar que os dados contidos estão inalterados e preservados. Também foram vivenciados desafios

ao longo deste projeto com aprendizagem e aplicação do conhecimento no âmbito profissional. AGRADECIMENTOS

Ao meu orientador professor MSc. Cid Cintra pela paciência e profissionalismo dedicados. À minha madrinha professora Dra. Maria “Zezé” pelo apoio nos momentos difíceis e por último e não menos importante ao nosso mestre professor Dr. Rael pela dedicação quase integral dedicada aos seus alunos.

A todos os professores do curso de TSI do ICESP e pelo o incentivo pela sabedoria e paciência ao transmitir-me o conhecimento, pelos novos horizontes que trouxeram à minha vida.

À minha família que é minha vida e meus amigos alimento do meu empenho pelo tamanho incentivo e apoio, cuidado, motivadoras cobranças

Page 23: TSI DESENVOLVIMENTO DE SOFTWARE DE CRIPTOGRAFIA …nippromove.hospedagemdesites.ws/anais_simposio/arquivos_up/... · CRIPTOGRAFIA DE ARQUIVOS COM CÍFRA ... ambos com sua importância

Simp.TCC/Sem.IC.2017(12); 2767-2789 2789

em mais uma jornada. Não citarei nomes para não ser injusto com algum que possa vir a esquecer, um grande abraço irmãos.

Alan Jorge de Sousa Coelho.

Ao meu orientador professor MSc. Cid Cintra pela paciência e profissionalismo dedicados. À minha mãe Sônia pelo seu apoio nos momentos difíceis e por último e não menos importante ao nosso mestre professor Dr. Rael pela dedicação quase integral dedicada aos seus alunos.

A todos os professores do curso de TSI do ICESP e pelo o incentivo pela sabedoria e paciência ao transmitir-me o conhecimento, pelos novos horizontes que trouxeram à minha vida.

À minha família, que é minha vida e meus amigos alimento do meu empenho pelo tamanho incentivo e apoio, cuidado, motivadoras cobranças em mais uma jornada. Um grande abraço a todos que me apoiaram.

Rafael Henrique Costa Ribeiro.

BIBLIOGRÁFIA ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 10520: informação e documentação: citações em documentos: apresentação. Rio de Janeiro, 2002. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6023: informação e documentação: referências: elaboração. Rio de Janeiro: 2002. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 27001:2006 – Tecnologia da informação – Técnicas de segurança – Sistemas de gestão de segurança da informação - Requisitos . Rio de Janeiro: ABNT, 2006. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 27002:2005 – Tecnologia da informação – Técnicas de segurança – Código de prática para gestão da segurança da Informação. Rio de Janeiro: ABNT, 2005. SOMMERVILLE, Ian. Engenharia de Software . 9. ed. São Paulo: Pearson Education do Brasil, 2011. ALVARENGA, Luiz Gonzaga de. Criptografia Clássica e Moderna . 2 ed. 2011. SILVA, Alberto; VIDEIRA, Carlos. UML, Metodologias e Ferramentas CASE. Edições Centro Atlântico, Lisboa, Portugal, 2001. Silva, Tavares Silva; Carvalho, Hugo; Torres, Botelho Catarina. Segurança dos Sistemas De Informação. Edições Centro Atlântico, Lisboa, Portugal, 2003. CHIARAMONTE, Rodolfo Barros; PEREIRA, Fábio Dacêncio; MORENO, Edward David. Criptografia em Software e Hardware. ed. Novatec São Paulo, 2005.

DEITEL e DEITEL. Java Como Programar . 8 Ed. Pearson, São Paulo, 2010 Sítios: <(https://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html)> <https://blogs.oracle.com/java-platform-group/jdk-8-will-use-tls-12-as-default> <https://www.cert.br/> <http://www.ctir.gov.br/> <http://dsic.planalto.gov.br/> <www.linhadecodigo.com.br/artigo/1293> <http://astah.net>