Buscar

criptografia em python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Instituto de Ciências Exatas e Tecnologia
Sistema da informação
Turma: SI1P07
 RA: F03034-2
 RA: D96881-5
 RA: N50229-0
 RA: N4426D-5
 RA: D912GA-3
 Daniel Rabelo da Costa
 Djavan Claudio de Oliveira
 Lucas Santos Silva
 Renan Coelho Rodrigues
 Vinicius Vaz Cavalcante dos Santos 
 
ATIVIDADES PRÁTICAS SUPERVISIONADAS 
CRIPTOGRAFIA
SÃO PAULO
2019
 RA: F03034-2
 RA: D96881-5
 RA: N50229-0
 RA: N4426D-5
 RA: D912GA-3
 Daniel Rabelo da Costa
 Djavan Claudio de Oliveira
 Lucas Santos Silva
 Renan Coelho Rodrigues
 Vinicius Vaz Cavalcante dos Santos
 
 
ATIVIDADES PRÁTICAS SUPERVISIONADAS 
CRIPTOGRAFIA
Atividade Prática Supervisionada apresentado a Universidade Paulista UNIP, como requisitado para conclusão de semestre.
SÃO PAULO
2019
ÍNDICE
ÍNDICE	3
OBJETIVO DO TRABALHO	1
INTRODUÇÃO	2
1.	História da Criptografia	3
2.	Tipos de Criptografia	4
2.1.	Criptografia Hash	4
2.2.	Chaves Simétricas	5
2.3.	Chaves Assimétricas	6
2.4.	Combinação dos Tipos	7
3.	Distribuição da chave pública	8
3.1.	Timing Attacks	8
4.	Tipos de criptografias mais usadas nas Redes Wireless	9
4.1.	Wired Equivalent Privacy - WEP	9
4.2.	WPA e WPA2	9
4.3.	WPA2 com AES:	9
4.4.	Assinatura Digital	10
5.	Criptografia e assinatura digital	10
5.1.	Modificação de mensagem assinada digitalmente	10
5.2.	Sistemas de Enchimento	10
6.	importância das ICPs	11
7.	O futuro	12
8.	METODOLOGIA	12
8.2.	Hexadecimal	13
9.	RESULTADOS E DISCUSSÕES	14
9.1.	Fluxograma	14
9.2.	Algoritmo do Programa	15
10.	APÊNDICE	28
11.	Conclusão	35
Referências	36
18
OBJETIVO DO TRABALHO
A criptografia é um conjunto de técnicas para esconder informação de acesso não autorizado. O objetivo da criptografia é transformar um conjunto de informação legível, como um e-mail, por exemplo, em um emaranhado de caracteres impossível de ser compreendido. O conceito chave é que apenas quem tem a chave de decriptação seja capaz de recuperar o e-mail em formato legível. Mesmo conhecendo todo o processo para esconder e recuperar os dados, a pessoa não autorizada não consegue descobrir a informação sem a chave de decriptação.
Com a evolução desse paradigma de criptografia ao longo dos séculos, hoje temos mecanismos seguros e eficientes, como o 3DES (Triple Data Encryption Standard) e o AES (Advanced Encryption Standard), que são os algoritmos base para os protocolos usados.
Além do uso tradicional da criptografia para manter a confidencialidade dos dados, a criptografia possui outras finalidades no mundo dos computadores. Através da criptografia, pode-se implementar técnicas de garantia de integridade dos dados e de autenticação das mensagens. A garantia de integridade garante que se um dado for modificado, essa modificação é detectada, informando ao destinatário que a mensagem foi comprometida. Já a autenticação das mensagens é o que comumente chama-se de assinatura digital. Tal técnica permite garantir que uma mensagem veio de quem diz ser o remetente. Para garantir a origem, basta que o emissor encripte a mensagem utilizando a sua chave privada. Assim, todos terão certeza que foi realmente aquele emissor quem enviou a mensagem.
INTRODUÇÃO
No dia-a-dia a veracidade de um documento se dá a assinatura que está presente nele, somente assim ele pode ser levado em conta legalmente.
 Com a Internet cada vez mais presente em nosso dia-a-dia, encontramos um problema: Como dar veracidade e autenticidade à um documento enviado pela web?
 É por essas e outras razões que a assinatura digital foi criada. Apesar de não ser 100% segura, a probabilidade de haver uma falsificação da mesma pode ser comparada à de alguém falsificar sua assinatura no papel. Para quebrá-la por força bruta, é necessário um poder computacional inimaginável, já que os algoritmos de criptografia estão ficando cada vez mais complexos e as chaves geradas pelos mesmos, cada vez maiores.
História da Criptografia 
 Desenvolvida por Arthur Scherbius em 1918, a Enigma levantou um grande interesse por parte da marinha de guerra alemã em 1926, quando passou a ser usado como seu principal meio de comunicação e ficaram conhecidas como Funkschlüssel C.
Em 1928, o exército elaborou sua própria versão, a Enigma G, e passou a ser usado por todo o exército alemão, tendo suas chaves trocadas mensalmente.
 A máquina era elétrico-mecânica e funcionava com rotores (primeiramente com 3 e depois com até 8 rotores). Ao pressionar uma tecla, o rotor mais da esquerda avançava uma posição, o que ocasionava a rotação dos outros rotores da direita. Esse movimento contínuo dos rotores ocasionava em diferentes combinações na encriptação.
A codificação de uma mensagem criptografada pela Enigma era considerada impossível na época (já que para tal, seria necessário uma alta força bruta computacional).
 A título de curiosidade, os Aliados só conseguiram decifrar os códigos da Enigma graças ao roubo de uma dessas máquinas, e que com graças à engenharia reversa, foram construídas máquinas capazes de ler e codificar os códigos alemães, os Colossus.
 A Enigma acabou por gerar diversos descendentes, tais como a Typex, a SIGABA e a M- 134-C, que apesar de serem semelhantes à Enigma em seus princípios básicos, eram muito mais seguras.
 A criptografia passou a ser usada em larga escala por todas as ações, principalmente em épocas de guerra, tal como durante a Guerra Fria, onde Estados Unidos e União Soviética usaram esses métodos a fim de esconder do inimigo suas ações e movimentações, criptografando-as e impedindo que outros que não possuíssem a chave pudessem ler, forçando-os a usar diversos métodos para quebrar os códigos de criptografia.
Tipos de Criptografia
No caso das Chaves (tanto Simétrica quanto Assimétrica), o nível de segurança de uma criptografia é medido no número de bits, ou seja, quanto mais bits forem usados, mais difícil será quebrar a criptografia na força bruta.
 Ex: Se tivermos uma criptografia de 10 bits, existirão apenas 2¹º (ou 1024) chaves, porém, ao usarmos 64 bits, o número de chaves possíveis subirá para aproximadamente 20 x 10^18 chaves, um número alto até mesmo para um computador.
 No caso da função Hash, o nível de segurança é dado pela dificuldade de se criar colisões intencionais, evitando que haja sequência igual para dados diferentes.
Criptografia Hash 
 A criptografia hash permite que, através de uma string de qualquer tamanho, seja calculado um identificador digital de tamanho fixo, chamado de valor hash. O valor hash geralmente é formado por 16 bytes (no caso do MD-2, MD-4 e MD- 5) ou 20 bytes (no caso do SHA-1), mas pode se estender, embora não passe de 512 bytes.
Seja uma função hash H, e x uma string qualquer, teremos que H(x) será o valor hash para a string x.
As características básicas de uma função hash são:
O valor de entrada da função possui qualquer tamanho;
O valor de saída da função possui tamanho fixo;
H(x) é relativamente fácil de ser computado, para qualquer valor de x;
H(x) é uma função “one-way”;
H(x) é livre de colisão.
 Uma função hash é dita "one-way”, pois uma vez obtido o valor hash h para uma string x, é computacionalmente impossível fazer o processo inverso, ou seja, encontrar um valor x tal que H(x) = h. 
 Diz-se ainda que H(x) é livre de colisão, significando que as funções hash devem garantir uma probabilidade mínima de que dois strings diferentes acabem por resultar no mesmo valor hash. Qualquer alteração na string original que deu origem ao identificador digital, mesmo que de um único bit, acabará por gerar uma alteração significativa no valor hash final.
Chaves Simétricas
 É o tipo mais simples de criptografia, já que tanto o emissor quanto o receptor da mensagem possuem a mesma chave, ou seja, a mesma chave é usada tanto na codificação quanto na decodificação.
 Para ser realizada, basta que o emissor, antes de enviar a mensagem criptografada, envie a chave privada que será utilizada para descriptografá-la.
Existem diversos algoritmoscriptográficos que fazem uso da Chave Simétrica, tais como:
 DES (Data Encryption Standard)
 Criado pela IBM em 1977, usa criptografia de 56 bits, o que corresponde a cerca de 72 quadrilhões de chaves diferentes. Apesar de ser um valor bastante alto, foi quebrado por em 1997 por força bruta (tentativa e erro), em um desafio feito na Internet.
 IDEA (Internacional Data Encryption Algorithm)
 Criado em 1991 por Massey e Xuejia Lai, utiliza chaves de 128 bits com uma estrutura semelhante ao anteriormente citado DES, porém, possui uma implementação mais simples.
 RC (Ron’s Code ou Rivest Cipher)
 Desenvolvido por Ron Rivest, é largamente utilizado em e- mails. Possui diversas versões (RC2, RC4, RC5 e RC6), com chaves que vão de 8 à 1024 bits
 Podemos citar ainda o 3DES, o Twofish e o Blowfish, entre outros.
 Porém, a Chave Simétrica apresenta alguns problemas graves, tais como a necessidade da troca constante dessas chaves e a impossibilidade de serem usados com fins de autenticação (já que a transmissão da chave privada de um para o outro pode não ser segura e acabar caindo em outras mãos), apesar de seus algoritmos serem mais rápidos do que os algoritmos assimétricos.	
Chaves Assimétricas
 Diferentemente do método de Chave Simétrica, esse tipo utiliza 2 chaves, uma pública e uma privada. O sistema funciona da forma que alguém cria uma chave e envia essa chave à quem quiser mandar informações à ela, essa é a chamada chave pública. Com ela é feita a codificação da mensagem. Para decodificação será necessário utilizar outra chave que deve ser criada, a chave privada – que é secreta.	
Esse esquema de chaves pública e privada atuando em conjunto funciona muito bem, principalmente quando queremos garantir a confiabilidade nos dados, já que somente o proprietário da chave privada será capaz de descriptografar a mensagem e vice-versa (nem mesmo o dono da chave pode descriptar a mensagem que ele encriptou, a não ser que ele possua a outra chave), ou seja, mesma que ela caia em “mãos erradas”, essa pessoa não será capaz de lê-la.
 Existem diversos algoritmos criptográficos que fazem uso da Chave Simétrica, tais como:
 RSA (Rivest, Chamir e Adleman)
 Criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman, é um dos algoritmos de chave assimétrica mais utilizada. Seu funcionamento consiste na multiplicação de 2 números primos muito grandes para a geração de um terceiro número. Para quebrar essa criptografia, seria necessário a fatoração desse número para encontrar os 2 números primos que o geraram, porém, para isso é necessário um poder muito alto de processamento, o que acaba inviabilizando a tarefa. As chaves privadas são os dois números primos e a pública é o terceiro número.
 
Combinação dos Tipos
 Com os dois tipos de Chaves (Simétrica e Assimétrica) tendo suas vantagens e desvantagens, era natural o surgimento um método que buscasse mixar as vantagens de cada um, eliminando assim, suas desvantagens.
 Os protocolos TLS (Transport Layer Security) e SSL (Secure Sockets Layer) são exemplos dessa mistura. Para compensar o problema do segredo pré-estabelecido da chave simétrica e o alto poder computacional necessário na chave simétrica, foi elaborado um meio onde em sua primeira etapa (handshake), seja utilizada a criptografia assimétrica, autenticando assim os nós e combinando uma chave secreta para um uso posterior na criptografia simétrica. Como o algoritmo de chave pública garante que a negociação foi realizada em um canal seguro, não havendo a necessidade da troca periódica da chave (problemas no caso da Chave Simétrica), todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simétrica, o que diminui potencialmente a necessidade do poder computacional, permitindo seu uso em uma comunicação mais intensa (problemas encontrados na Chave Assimétrica).	
Distribuição da chave pública
 
 Como em todo tipo de criptografia com chave assimétrica, a segurança da divulgação da chave pública é muito importante. Caso contrário, uma pessoa pode distribuir chaves públicas em nome de outras pessoas. Por exemplo:
 Digamos que um atacante deseje transmitir uma mensagem em nome de uma pessoa A. Ele cria uma chave pública e a distribui, como se esta fosse a chave pública de A. Em seguida, ele pode encriptar qualquer mensagem usado sua chave privada, assinar digitalmente o documento e enviá-lo para um destinatário B. B verificará a assinatura e não encontrará fraude. Para prevenir este tipo de ataque, é necessário que haja uma ICP (Infraestrutura de Chaves Públicas) ou, em inglês, PKI (Public Key Infrastructure).
 As ICPs garantem a autenticidade das chaves públicas. No Brasil, a ICP-Brasil controla seis Autoridades Certificadoras*: a Presidência da República, a Receita Federal, o SERPRO, a Caixa Econômica Federal, a Serasa e a CertiSign.
Autoridades Certificadoras são órgãos responsáveis pela emissão de Certificados Digitais. 
Certificados Digitais são documentos que contém a chave pública de um usuário e os dados necessários para garantir sua identidade.
Timing Attacks
 Outra possibilidade de descoberta da chave privada é quando o atacante conhece muito bem o hardware do usuário que assina uma mensagem digitalmente e é capaz de interceptar as mensagens assinadas por este. Se o atacante tiver conhecimento do tempo de encriptação (assinatura) de diversas mensagens, é possível que ele descubra a chave privada do usuário. Em geral, esse tipo de ataque era usado contra smart cards, no entanto Dan Boneh e David Brumley mostraram que é possível descobrir a chave privada de um servidor de uma rede local, com segurança baseado em OpenSSL, o que foi publicado no artigo Remote Timing Attacks are Practical (2003).
 Uma forma de evitar timing attacks é garantir que o processo de encriptação seja feito sempre em tempo constante, para qualquer texto que seja assinado, apesar de acarretar uma perda de eficiência.
Tipos de criptografias mais usadas nas Redes Wireless
Wired Equivalent Privacy - WEP
Tem um a chave secreta compartilhada e o algoritmo de criptografia RC4, os equipamentos que forem conectar-se a ele, usam a mesma chave compartilhada, para cada pacote de dados enviado em qualquer direção, o transmissor combina o conteúdo do pacote com uma soma de verificação desse pacote. O padrão WEP pede então que o transmissor crie um IV (“Initialization Vector”, que significa: “vetor de inicialização”), específico para o pacote, que é combinado com a chave e usado para criptografar o pacote. O receptor gera seu próprio pacote correspondente e o usa para decodificar o pacote. Na teoria, é melhor do que o obvio de usar apenas a chave secreta com partilhada, pois é acrescentado um bit de dado especifico para o pacote que torna mais difícil a violação. Mas se uma chave compartilhada estiver comprometida, um invasor poderá vasculhar o tráfico de suas informações ou entrar na sua rede.
WPA e WPA2
Estes tipos de certificados de segurança, tem embasamento no padrão da Wi-Fi Alliance para redes locais sem fio, que empresas e redes domésticas utilizam. Permitem uma autenticação mútua para verificação de usuários individuais e com criptografia avançada. 
WPA2 com AES:
 Usada por muitos órgãos governamentais no mundo inteiro, tanto para o uso corporativo quanto para o pessoal. Ao usuário residencial, ele garante um excelente padrão de segurança e, aos usuários corporativos, permite agregar um servidor de autenticação para controle dos usuários em conjunto com a criptografia”, avalia Diogo Superbi, engenheiro de vendas da Linksys no Brasil.
Assinatura Digital 
Usado com chaves públicas, tem a função de provar a autenticidade que um determinado documento eletrônico é de procedência verídica.
O usuário que recebe o documento assinado digitalmente, usa uma chave pública que é fornecida pelo emissor, para certificar a sua origem, a chave tem integração com o documento, de forma que qualquer alteração neste documento, invalidará o mesmo.
Criptografiae assinatura digital
O objetivo da criptografia é esconder o conteúdo, para que este não esteja acessível a terceiros. Já a assinatura digital visa garantir a autoria do documento, e que a mensagem não tenha sido modificada durante sua transmissão.
Modificação de mensagem assinada digitalmente
Verificar se o valor hash da mensagem é igual ao valor obtido pela decriptação da assinatura, usando a chave pública do emissor.
Qual a diferença entre assinatura digital e certificado digital?
Assinatura digital é o método de autenticação de uma informação digital. Certificado Digital é um documento que contém a chave pública de uma pessoa (física ou jurídica) e os dados necessários para garantir sua identidade.
Sistemas de Enchimento
Os sistemas de enchimento se fazem necessários neste tipo de criptografia para evitar que mensagens gerem valores não seguros para a aplicação do algoritmo. Isto é, existem valores para os quais a função modular se torna facilmente reversível, e portanto, não são seguros. Para evitar que isso ocorra, um enchimento – que pode ser fixo ou aleatório – é concatenado ao valor hash da mensagem.
Um exemplo numérico do funcionamento deste algoritmo é apresentado abaixo:
Sejam dois números primos p e q:
p= 61 e q= 53
Computa-se n =p*q:
n= 61*53 = 3233
Computa-se fi(n) = (p-1)(q-1)
fi(n)= (61 -1)*(53 -1) = 3120 
É escolhido um número inteiro positivo qualquer, que seja comprimo em relação ao valor encontrado para fi(n): 
e = 17
Computa-se d tal que o produto (d*e) seja concluinte a [1 mod fi(n))]:
d= 2753 
Agora já temos a chave privada (n, d) para assinar digitalmente a mensagem:
S = [(EM)^d] mod n , onde EM é um inteiro que representa a mensagem após ser aplicada uma transformação sobre o valor hash da mensagem.
Seja 123 o valor obtido para EM: 
S = (123)^2753 mod 3233 = 2746 
O destinatário então – de posse da mensagem, da assinatura S, e da chave pública(n, e) – poderá verificar a autenticidade da assinatura computando:
EM = [(S)^e] mod n , onde (n, e) é a chave pública.
EM = (2746)^17 mod 3233 = 123 
Se o número obtido pela decriptação da assinatura for igual ao obtido pela transformação da mensagem recebida, a autenticidade da assinatura estará garantida.
importância das ICPs
As ICPs são importantes para controlar a distribuição das chaves públicas, evitando fraudes. A ICP de um país controla as suas Autoridades Certificadoras, órgãos responsáveis pela emissão de Certificados Digitais.
Porque Chave Simétrica não poderia ser usada para assinatura digital?
Pois uma assinatura digital visa garantir a autoria de uma mensagem, e portanto a chave usada para a assinatura deve estar nas mão de uma única pessoa: o emissor que assina geralmente a mensagem. Como na criptografia por chaves simétricas é necessário que emissor e receptor sempre possuam a mesma chave, ela não se torna apropriada para fins de autenticação.
O futuro
 Anterior ao conceito de Chave Assimétrica, o conceito de Criptografia Quântica foi desenvolvida por Stephen Wiesner em 1970. Consiste no uso de fótons, que permite que 2 pessoas possam trocar uma chave secreta sem jamais terem trocado alguma mensagem.
 Diferentemente da criptografia atual, que tem a Matemática como seu pilar central, a Criptografia Quântica se utiliza da Física. Suas principais características são:
Não necessidade de um segredo nem contato prévio entre as partes;
Detecção de intrusos tentando interceptar o envio das chaves;
Segura, mesmo perante a um poder computacional ilimitado.
 Os problemas atuais dessa tecnologia são as altas taxas de erros em suas transmissões, principalmente quando a distância é maior do que 70 km (para fibras óticas) e algumas centenas de metros (no caso de transmissão aérea). Porém, com o desenvolvimento de novas tecnologias que possam dar suporte, além do aperfeiçoamento de tecnologias já existentes (como as fibras óticas), a Criptografia Quântica promete ser o novo padrão em termo de segurança de dados.
METODOLOGIA
Para a criptografia utilizamos o identificador único universal chamado de UUID, que e um sistema funcional e singular, por gerar para cada caso um identificador único, quase impossivel de se duplicado, onde tras a maior segurança e a impossibilidade de descriptografia, pois para cada caracter temos um hexadecimal que é gerado aleatoriamente pelo proprio UUID, e depois trasformamos em Hexadecimal para que assim se torne mais dificil a descriptografia tranzendo assim segurança para o úsuario, e assim, fazendo o uso de mesclagem de tipos de criptografia tornando o programa totalmente autoral.
UUID
O identificador único universal, ou Universally Unique Identifier – UUID, é um número de 128 bits, onde cada bit é ou cada caractere tem uma representação hexadecimal.
O UUID é singular, ou seja, é gerado de acordo com o padrão estabelecido, um UUID único e aleatório; Embora tenha possibilidade de ser duplicado, esta chance é levada a quase zero, por isso é considerado insignificante e quase impossível, isto torna o uso mais seguro.
Hexadecimal
 
É um sistema de numeração posicional onde tem como base o 16(dezeceis), pois isto emprega 16 simbolos.
No caso a junção de HEXA(6) + DECI(10) = BASE 16, por isso é representado por 16 algarismos, 
Então:
0, 1, 2 ,3, 4, 5,6, 7, 8, 9, A, B, C, D, E, F, onde: A=10, B=11, C=12, D=13, E=14, F=15;
E um numero Hexadecimal representa um conjunto de 4 Bits.
RESULTADOS e discussões 
Como resultado temos a criptografia de uma mensagem de entrada, onde o usuario insere o texto e o texto é processado em UUID, e transformado em Hexadecimal, para que tenha segurança até o fim do processamento e saida da mensagem, pois a criptografia prega segurança de dados de entrada até seu destino final, no caso uma mensagem entendida apenas pelo usuario inicial. Como resultado disso, realizamos um fluxograma para definirmos de onde partir e onde devemos finalizar, assim, desenvolvemos um sistema autoral e seguro.
Discussões: realizamos diversas reuniões para definir prazos, metas e objetivos do grupo, para assim definirmos que criptografia iriamos utilizar e de que forma iriamos fazer, com isto, chegamos a conclussão de utilizarmos uuid e hexadecimal para o nosso projeto, assim combinarmos dois metodos. Desta forma conseguimos concluir com exito nossos objetivos e metas.
Fluxograma 
Fluxograma 1
 
Algoritmo do Programa
Parte 1 – Inserir o nome para que seja dado início ao algoritmo
 
Parte 2 - Após ter digitado o nome do usuário o programa vai pedir para digitar 1, assim vai abrir o menu principal, no menu tem 4 opções, como mostra no print 
Parte 3 – o usuário vai digitar um dos 4 números, caso ele digite um número que não existe no menu principal vai dar um ERRO
 
Parte 4 – Caso digite letras também dará erro 
 
Parte 5 – Após usuário digitar um número correspondente ao menu principal, no caso opção 1 – criptografar e vai pedir para digitar o que deseja criptografar
 
Parte 6 - Assim que digitar o texto que o usuário deseja criptografar em seguida o programa já vai mostrar a mensagem criptografada
 
Parte 7 – assim que o programa criptografar a mensagem ele vai pedir para criar uma senha, que você vai conseguir acessar sua criptografia depois
 
Parte 8 - Depois que finalizou a criptografia e criou a senha, vamos mostrar a opção 2 que é descriptografar.
 
Parte 9 – Depois de selecionar a opção 2 ele vai pedir para o usuário digitar a senha que ele criou na hora de criptografar
 
Parte 10 – Digitando a senha correta e o programa vai trazer a sua mensagem descriptografada.
Caso a senha digitada seja a incorreta o sistema retorna a mensagem informando que a senha está incorreta e retorna ao menu inicial.
 
Parte 11 – Na opção 3 do nosso programa o usuário consegue ver a criptografia criada.
 
Parte 12 – E para finalizar nosso programa a opção 4 sair do sistema.
 
APÊNDICE
Parte 1
# Importar biblioteca criada com funções
from aps.lib.interfaceimport*
#Importar arquivos criados
from aps.lib.arquivo import*
# Importar tempo de andamento do sistema
from time import sleep
arq = 'crip.txt'
if not arquivoExiste(arq):
 criarArquivo(arq)
criptada = ''
msgcript = ''
lista = []
cabeçalho(' APS DE CRIPTOGRAFIA 2º SEMESTRE UNIP')
cabeçalho('Bem vindo ao nosso Programa')
print('')
print('')
nome = ''
nome = input('Olá, me diga seu nome: ')
print(f'\nVamos dar inicio a sua experiência digite 1 para começar {nome}'.upper())
while True:
 resposta = menu(['Criptografar','Descriptografar','Ver criptografia','Sair do sistema '])
 if resposta == 1:
 cabeçalho('Digite sua mensagem: ')
 criptada = input('Digite aqui: ')
 print('')
 hashed_message = hash_message(criptada)
 print(f'\033[32mMensagem criptografada: \033[m', hashed_message)
 f = open('crip.txt','w')
 for i in range(0, len(criptada)):
 lista.append(criptada)
 f.write(criptada)
 cabeçalho('Crie uma senha:')
 senha = input('Senha: ')
 lista.append(senha)
 f.close()
 elif resposta == 2:
 cabeçalho('Digite sua senha:')
 check = input(' ')
 if check == senha:
 print('\033[32mSua mensagem digita foi:\033[m ', criptada)
 else:
 print('\033[31msenha incorreta !\033[m')
 elif resposta == 3:
 print('\033[32mSua mensagem encriptada é:\033[m ', hashed_message)
 elif resposta == 4:
 cabeçalho('Saindo do sistema ... Até logo!')
 cabeçalho('Um agradecimento especial de:\n DANIEL RABELO\n DJAVAN CLAUDIO\n LUCAS SILVA\n RENAN COELHO\n VINICIUS VAZ')
 break
 else:
 print('\033[31mERRO! Digite uma opção válida!\033[m')
 sleep(2)
Parte 2
from aps.lib.interface import*
# Função para verificar se o arquivo existe
def arquivoExiste(nome):
 try:
 a = open(nome,'rt')
 a.close()
 except FileNotFoundError:
 return False
 else:
 return True
# Função para criar o arquivo caso não exista
def criarArquivo(nome):
 try:
 a = open(nome,'wt+')
 a.close()
 except:
 print('Houve um erro na criação do arquivo!')
 else:
 print(f'Arquivo {nome} criado com sucesso!')
def lerArquivo(nome):
 try:
 a = open(nome,'rt')
 except:
 print('Erro ao ler o arquivo!')
 else:
 cabeçalho(' Mensagem ')
 print(a.read())
 finally:
 a.close()
Parte 3
import uuid
import hashlib
def leiaInt(msg):
 while True:
 try:
 n = int(input(msg))
 except (ValueError, TypeError, NameError):
 print('\033[31mErro: por favor, digite um número inteiro válido.\033[m')
 continue
 except (KeyboardInterrupt):
 print('\n\033[31mUsuário prefereriu não digitar esse número.\033[m')
 return 0
 else:
 return n
def linha(tam=120):
 return '-' * tam
def cabeçalho(txt):
 print(linha())
 print(txt.center(120))
 print(linha())
def menu(lista):
 cabeçalho('MENU PRINCIPAL \n\n O que deseja fazer?')
 c = 1
 for item in lista:
 print(f'\033[33m{c}\033[m - \033[34m{item}\033[m')
 c += 1
 print(linha())
 opc = leiaInt('\033[32mSua opção: \033[m')
 return opc
def hash_message(message):
 salt = uuid.uuid4().hex
 return hashlib.sha256(salt.encode()+message.encode()).hexdigest()+":"+salt
def check_message(hashed_message,user_message):
 message, salt = hashed_message.split(':')
 return message == hashlib.sha256(salt.encode()+user_message.encode()).hexdigest()
Conclusão
O projeto da criptografia , vem com intuito de desenvolver o conhecimento do aluno aplicando todos os conhecimentos de python, em uma algoritmo de forma pratica e autoral.
O projeto demorou cerca 4 semanas para ficar pronto, com os resultados adquiridos em nossos testes levaremos esse conhecimento para o futuro, onde cada vez mais as empresas empregam a segurança em seu escopo.
O nosso projeto desenvolveu um sistema para criptografar uma mensagem de entrada em que o usuario insere a mensagem e utilizando sistemas como UUID(IDENTIFICADOR UNICO UNIVERSAL), que gera um identificador aleatorio único, criptografar a mensagem, e para apresentar para o usuario em Hexadecimal.
Conseguimos atingir as metas e objetivos estipulados para assim desenvolver de forma autoral um sistema de criptografia e descriptografia de mensagem.
Referências
ALECRIM EMERSON. infowester. INFOWESTER, 30 abr. 2009. Disponivel em: <https://www.infowester.com/assincertdigital.php>.
ALECRIM, E. Oque é certificado digital e para que serve? Info Wester, 2009. Disponivel em: <https://www.infowester.com/assincertdigital.php>. Acesso em: Outubro 2019.
ALECRIM, E. Criptografia. Infowester, 2015. Disponivel em: <https://www.infowester.com/criptografia.php>. Acesso em: outubro 2019.
GONZÁLEZ, D. Conheça os tipos de criptografia digital mais utilizados. PC World, 2007. Disponivel em: <https://pcworld.com.br/idgnoticia2007-10-040383475254/>. Acesso em: Novembro 2019.
NOGUEIRA, M. Criptografia: Definição, origem e características. Estudo Prático, 2015. Disponivel em: <https://www.estudopratico.com.br/criptografia/>. Acesso em: Novembro 2019.
ROBERTO, J. Oque é UUID? Porque usá-lo?. medium, 2018. Disponivel em: <https://medium.com/trainingcenter/o-que-%C3%A9-uuid-porque-us%C3%A1-lo-ad7a66644a2b>. Acesso em: Novembro 2019.
VALID CERTIFICADORA DIGITAL. Tipos de criptografia: conheça os 10 mais usados e como funciona cada um. Valid Certificadora, 2019. Disponivel em: <https://blog.validcertificadora.com.br/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-funciona-cada-um/>. Acesso em: novembro 2019.

Outros materiais