Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Acadêmicos: - - - - - - - - - - CRIPTOGRAFIA Atividade Prática supervisionada (APS) referente ao 2º Semestre do Curso de Ciência Da Computação. Jundiaí – SP 2 Sumário 1 – Objetivo do Trabalho .............................................................................................................. 3 2 – Introdução .............................................................................................................................. 4 3 – Criptografia (conceitos gerais) ................................................................................................. 7 4- Técnicas criptográficas mais utilizadas .................................................................................... 11 4.2 - Chaves Simétricas ........................................................................................................... 11 • • DES (Data Encryption Standard): ............................................................................... 11 • • IDEA (International Data Encryption Algorithm): ....................................................... 11 • • RC (Ron's Code ou Rivest Cipher): ............................................................................. 11 • • Blowfish: .................................................................................................................. 11 4.3 - Chaves Assimétricas ........................................................................................................ 12 • • El Gamal: .................................................................................................................. 12 • • RSA (Rivest, Shamir and Adleman): ........................................................................... 12 4.4 - Redes Sem Fio ................................................................................................................. 12 • • WEP: 13 • • WPA e WPA2: ........................................................................................................... 14 4.5 - Assinatura Digital ............................................................................................................ 14 4.6 - Criptografia Quântica ...................................................................................................... 14 5 - Dissertação ............................................................................................................................ 16 5.1 - Tabela de Caracteres em ASCII ......................................................................................... 17 5.3 - Tabela de caracteres em ASCII estendido ......................................................................... 20 6 – Projeto (Estrutura) Do Programa ........................................................................................... 22 • Já o processo de reversão é feito da seguinte forma: ................................................. 25 7 – Relatório Com As Linhas De Código Do Programa ................................................................... 27 8 - Referências Bibliográficas ...................................................................................................... 33 3 1 – Objetivo do Trabalho Temos como objetivo por meio deste artigo a exportação de conhecimento sobre a criptografia e suas técnicas, evidenciados seus conceitos, relevando a sua importância para toda a humanidade e sua preocupação em manter informação, documento e etc. Prezando o acima de tudo a integridade de ambas as partes e a privacidade de algo que é transmitido para que uma ocasional interferência não tenha a possibilidade de conseguir extrair algo privado com facilidade. Assim evidenciando primeiros usos dados históricos, exemplos e funcionalidade, passando por toda a história e seus primórdios e seus modos de tonar a mensagem inelegível para outra pessoa a não ser o próprio remetente e seu destinatário expondo seu usos mais comuns e conceitos gerais. Venerando os Pilares mais importantes da segurança, sendo a confidencialidade, a integridade, disponibilidade, autenticidade, sendo estes princípios os fundamentos das técnicas que serão descritas ao longo do trabalho. Exteriorizando os pilares da segurança como no caso da confidencialidade, onde somente o responsável pela mensagem e alguém autorizado pelo mesmo poderia ter a permissão de ver, a integridade trazendo a garantia que a mensagem condicionada está correta e que não houve modificação e são legitimas, e a disponibilidade garantindo que a mensagem passada estarão acessíveis quando requeridas pelas pessoas autorizadas a ter posse daquela informação. Evidenciado tanto a modos de criptografia de tempos anteriores e seus principais usos e a enorme utilidade, até chegar em nossa atualidade, tanto a criptografia “em trânsito” quanto “em repouso”. E com base nestas informações e pesquisas colhidas efetuar a simples criação um programa em linguagem C para com um exemplo de criptografia, com base na tabela ASC, sendo a mensagem a escolha usuário, e após criptografado criara um arquivo com a mensagem já criptografada, tendo a possibilidade de reverter a criptografia novamente. 4 2 – Introdução Por meio do estudo desta APS iremos trazer informações sobre a criptografia, abordando o fundamento histórico da criptografia, o seu uso tanto antigamente quanto em tempos atuais , as primeiras formas de criptografia mesmo não se referindo ao meio computacional , sendo assim abordando até mesmo os seus primeiros métodos e usos , já que a palavra “criptografia” se traduzido do grego antigo tem o significado de “ escrita escondida “, com isto ocultando uma certa mensagem , ou seja , cifrando ela , para que somente quem estava ligado diretamente a mensagem consiga torna- la legível decifrando através de uma chave. Sendo este método de tornar uma mensagem inelegível uma forma de aumenta a segurança do que se é transmitido a mensagem, este método chamando de “criptografia” e um tanto quanto antigo desde os primórdios da humanidade já se era usada, mesmo não sendo no meio computacional, podemos utilizar como exemplo a “Cifra de César” mais conhecido por este termo. Mas também pode ser familiar com o nome de “Cifra de troca”, “Código de César”, até mesmo podendo ser conhecido como “troca de César”, mas sendo o primeiro termo o mais conhecido, era um exemplo claro de criptografia, mesmo não se tratando do meio computacional. Um dos primeiros modelos de criptografia já existentes criado pelo Imperador Júlio César, era uma cifra simples, sendo uma substituição da posição das letras, sendo substituída a posição uma a uma, nesta cifra cada letra era substituída três letras a frente de sua posição, por exemplo a frase “APS SEGUNDO SEMESTRE” cifrada com o método de César passaria a ser “DSV VHJXQGR VHPHVWUH”. Sendo esse meio de criptografia, não só, mas outros fora do “meio Computacional” considerados Criptografia clássica, aquelas que eram usadas em tempos antigos, sendo as mais notáveis a cifra de césar, scytale espartano, e também a cifra de Vigenère. Ainda dentro da criptografia clássica temos “A enigma”, sendo máquina eletromecânica, que anterior aos meios computacionais é a que mais se assemelha a tal, dado os fatos sabemos que desde antiguidade, a o interesse do ser humano em 5 ocultar ou proteger suas informações para que não haja interceptação entre o envio e a chegada desta informação. Estes meios antigos são os que mais se “assemelham” a criptografia na antiguidade, mas já existiram outros meios de ocultar mensagens para que haja uma segurança no envio, mas de uma forma não tanto convencional, como dito por Heródoto (Um historiador grego, viveu entre 484a.C à 426 a.C) um deste métodos que surgiu a mensagem era escrita na cabeça de um “mensageiro”. Para istoele teria que ter tido a cabeça raspada e então seria gravada a mensagem, após gravada era feita à espera do cabelo do mensageiro crescer para que então a mensagem seja levada ao destinatário, após a chegada ao destinatário o mensageiro raspa novamente o cabelo assim então revelando a mensagem. Modelo este dos primórdios dos tempos, como dito, destes meios de “criptografias não computacionais” a que mais se aproxima do que se retrata atualmente podemos se dizer que foi a criptografia mecânica, que foi primeiramente desenvolvida em 1918, com o objetivo primário a facilitação de troca de documentos confidenciais entre a comerciante e as pessoas de negócios, um grande exemplo deste modelo foi “A Enigma” usada na 2ª Guerra Mundial. Já chegando em métodos atuais, assim como antigamente temos como primórdios a segurança da informação como preocupação, ao contrário de tempos antigos onde a informação era escrita e dificilmente haviam copias, hoje com os meios de comunicação evoluídos podemos ter inúmeras copias da mesma informação. Em meio as formas de criptografia temos o uso de chaves para transitar informações com segurança, atualmente este modelo, melhor dizendo, técnica envolve o uso dessas chaves sendo criptográficas, com base em algoritmos com a capacidade de reconhecer a informação, sendo dois modelos bastante utilizados, a chave simétrica, e a assimétrica. A chave simétrica, podendo ser conhecida também como “criptografia de chave secreta”, ou tanto de “chave Única”, é usada para cifrar e tanto decifrar as informações, os métodos que utilizam estes meios serão evidenciados ao decorrer deste trabalho, mas esse meio de criptografia consiste de chaves com milhões de combinações para tornar a informação segura. 6 A assimétrica, que é conhecida também como de “Chave Pública”, diferente da anterior, este modelo utiliza duas chaves diferentes, sendo que uma é para cifrar já a outra decifrar, e também um outro aspecto diferente da criptografia de chave simétrica, e que naquele modelo a chave “transitava” na conexão, já neste, apenas por ser duas chaves é utilizado uma pública para cifrar, já para decifrar é utilizada uma chave privada. Entre métodos de segurança, há o certificado digital, funcionando meio que como uma forma de reforça a segurança, foi desenvolvido como um documento eletrônico, que é comprovado por uma “autoridade” que emite esses certificados, sendo assim comprovando a origem e também a integridade do emissor, sendo um dos mais utilizados o X-509, com os aspectos de chave pública do usuário, nome do usuário, a data em que o certificado foi emitido e também o a validade da chave. Tornando o certificado digital o registro eletrônico que armazena dados que diferenciam uma entidade e a associa a uma chave pública, sendo utilizados por diversas entidades como sites, pessoa, empresas entre outros, tornando este certificado como se fosse um “RG” do meio digital, abordando informações pessoais. Em meios a opções de segurança tem temos a VPN (Rede Virtual Privada), é uma rede trabalhando por cima da estrutura original, muitos utilizada por em empresas, garantindo mais segurança à sua rede seja na Intranet, internet ou até mesmo em negociações B2B (Empresa Para Empresa). Sendo este os pilares evidenciados de mais uso da criptografia segurança desde o início dos tempos antes mesmo da maquinas, passando por toda a linha do tempo histórica até chegar aos tempos modernos se adequando para oferecer cada vez mais segurança ao usuário e suas informações 7 3 – Criptografia (conceitos gerais) A criptografia pode ser definida como uma utilização de códigos para manter informações sigilosas. Trata-se de um conjunto de regras que codifica as informações de forma que só o emissor e o receptor consigam decifrá-la. Desde que o homem sentiu necessidade de proteger as informações foram implementadas técnicas para que somente determinadas pessoas conseguissem obtê-las. A partir disso a criptografia tornou-se uma ferramenta essencial para todo tipo de informação sigilosa. Toda criptografia utiliza de uma chave para criptografar e descriptografar qualquer informação e essa chave era passada para a o destinatário em que o autor da criptografia deseja enviar determinada informação. Como em muitos casos que já ocorreram, as empresas estão cada vez mais sendo alvo de hackers cibercriminosos e estão buscando sempre uma técnica de criptrografia mais avançada para proteger todos os seus dados. A criptografia de dados pessoais tem o principal objetivo de garantir a sua privacidade e protege-los assegurando a propriedade intelectual, também conhecido como criptografia de endopoint que adiciona uma camada extra de proteção para informações sigilosas em dispositivos. Na computação, a técnica usa de chaves criptograficas, que são um conjunto de bit’s baseado em um algoritmo capaz de codificar e decodificar determinadas informações. Com o uso dessas chaves, é possível utilizar o mesmo algoritmo para diferentes receptores, alterando somente a chave para cada um. Na computação, o uso da criptrografia proporciona vantagens como: • Proteger os dados sigilosos que estão armazenados no computador, como por exemplos as senhas utilizadas em diferentes locais; • Proteger as comunicações realizadas pela internet, como bancos e e-mails enviados. 8 • Proteger backups contra qualquer tipo de acesso indevido, onde é possível criar partições na memória afim de criptografar quaisquer informações que forem gravadas nessa partição. O tamanho das chaves é expresso por bits, quantos mais bits forem utilizados na criptografia, mais seguro será o código. Atualmente, são utilizadas criptografia de 256 até 1024 bits, ou seja, são geradas 2 elevado a 1024 combinações de chaves para cada informação, onde apenas uma delas é a correta, o que torna a segurança muito maior. De modo geral, a criptografia utiliza de uma chave para criptografar e uma chave para descriptografar. A partir disso, é desenvolvido os mais utilizados tipos de codificação com as chaves: chave simétrica, onde a chave utilizada para codificar e decodificar é a mesma chave, e a chave assimétrica, que possuí duas chaves criptográficas, uma pública e outra privada. Através dessa maneira com chaves assimétricas, o criador deve enviar uma chave para realizar a decodificação, chamada chave pública, a quem deseja mandar a informação. Criando outra chave, essa a privada, permite que realize a decodificação de determinada informação. Com o surgimento das redes wireless, a segurança envolvendo os dados teve uma queda e permitia com maior facilidade a sua quebra. Isso porque através da rede wireless, um usuário com um nível técnico de conhecimento bom facilmente conseguia burlar essa segurança. Através disso, foram criados novos tipos de criptografia de redes para oferecer segurança a essas informações trafegadas na rede, como por exemplo WPA e WPA2, que são tipos de certificados de segurança para internet. Ela passou a ser utilizada em larga escala por diversos lugares do mundo, principalmente em época de guerra, como por exemplo durante a Guerra Fria, onde os Estados Unidos e a União Soviética usaram métodos de criptografia a fim de esconder determinadas informações do inimigo, impedindo que outros que não possuíam a chave para descriptografar pudessem ler e consequentemente forçava- os a utilizar de diferentes métodos para quebrar a criptografia. 9 Um dos primeiros métodos de criptrografia utilizado foi a Cifra de César, que foi justamente utilizada pelo Imperador César durante o império Romano. O algoritmo era simples e o método utilizado nele era apenas substituir uma letra do alfabeto por seu correspondente três casas adiante, ou seja, a letra A se torna a letra D, a letra B se torna a E, e assim por diante. A criptografia moderna teveorigem durante a segunda guerra mundial, onde a troca de informação era crucial e qualquer informação que o inimigo descobrisse poderia acabar com uma estratégia de guerra. Durante esse período, os Alemães criaram a chamada “Máquina Enigma”, era uma máquina elétrico-mecânica que funcionava com rotores. O sujeito que escrevia a mensagem deveria inserir num mecanismo existente na máquina qual posição de arranque dos rotores e assim seria definida a chave para ser compartilhada entre os interlocutores. Ao pressionar uma tecla, o rotor mais a esquerda avançava uma posição que ocasionava a rotação dos rotores a direita. Esse movimento contínuo criava diferentes combinações de encriptação. Na época a criptografia utilizada pela máquina era considerava impossível de decifrar, tanto que os Aliados só conseguiram decifrar a criptografia após roubar uma dessas máquinas e estudar sua construção para utilizar engenharias reversas e construir outras máquinas capazes de decifrar. Portanto, a criptografia pode ser utilizada para proteger a identidade e a privacidade do usuário ou de uma informação sigilosa, evitando assim qualquer tipo de fraude utilizando de sua proteção criptográfica para ocultar dados, garantindo a segurança. Arthur Scherbius desenvolveu a criptografia em 191, que despertou grande interesse da marinha alemã em 1926, cuja foi nomeada de enigma, e foi o meio de comunicação mais utilizado pela marinha alemã da época. Já em 1928 foi criada pelo próprio exército alemão uma nova máquina de criptografia, chamada de enigma g, seguindo uma regra de segurança que implicava em trocar mensalmente suas chaves. A chave era desenvolvida em uma máquina eletromecânica, chamada de enigma, composta de rotores, quando era pressionada uma tecla o rotor da esquerda avançava uma posição, obrigando os demais rotores a rotacionar, mudando a sua formação a cada letra digitada, o que dificultava muito a decifragem de enigma. Enigma era utilizada tanto para encriptação como para 10 decriptação. Tanto espanhóis como italianos em épocas diferentes, tiverem acesso a enigma por meio de comercialização, porém essa comercialização, foi intitulada como imprudência dos alemães, pois facilitou o acesso dos britânicos, trabalhando para quebrar a cifrarem de enigma. Os alemães acreditavam que a criptografia feita por enigma era impossível de ser desfeita, porém, em 1933 a criptografia foi quebrada por matemáticos poloneses, com o auxílio de dispositivos eletroeletrônicos intitulados de “bombas”. Enigma gerou descendentes, mais avançados e melhorados, podendo proporcionar uma segurança muito mais forte do que a própria enigma, m-134-c, sigaba, typex. Depois dessa sequência de episódios a criptografia passou a ser muito utilizada, podemos dizer indispensável, criando novas formas de criptografias. 11 4- Técnicas criptográficas mais utilizadas 4.2 - Chaves Simétricas Uma única chave é criada, essa vai ser usada por quem a criou e vai enviá-la para quem vai receber as informações nela contida, ou seja, o receptor. Dito isso, significa que a codificação e a decodificação das informações são feitas pela mesma chave. Seu uso não é recomendado para arquivar informações muito importantes. Vamos ver alguns exemplos: • DES (Data Encryption Standard): Desenvolvido em 1977 pela IBM, é considerado inseguro devido a suas chaves com 56 bits (permitindo combinações de até 72 quatrilhões). Foi quebrado utilizando o método conhecido como “força bruta” (que é simplismente tentaiva e erro); • IDEA (International Data Encryption Algorithm): Desenvolvido no ano de 1991 por Xuejia Lai e James Massey. Utiliza chaves 128 bits e possui estrutura parecida com a do DES; • RC (Ron's Code ou Rivest Cipher): Existem diferentes versões do algoritmo, como a RC4, RC5 e RC6, nas quais forma desenvolvidas em uma empresa, cuja o nome é RSA Data Security, feitas por Ron Rivest. Dentre todos os seus usos, o mais utilizado é com certeza em mensagens via e-mail. E suas chaves utilizam de 8 até 1024 bits; • Blowfish: Desenvolvido em 1993 por Bruce Schneier, sendo utilizadas chaves de 32 até 448 bits. O algoritmo não é patenteado, tem sua licença grátis e está à disposição de todos. 12 Outros algoritmos muito conhecidos são o AES (Advanced Encryption Standard), que teve como base o DES. Mas também teve ideias baseadas no 3DES, e no próprio Twofish. O uso dessas chaves não é o mais aconselhável por possuir muitas desvantagens, um exemplo muito possível de ocorrem interceptações é quando esta contém informações e dados de valor muito valioso, o risco delas serem vazadas é muito alto. 4.3 - Chaves Assimétricas Utiliza 2 chaves: uma pública e outra privada. O usuário então deve desenvolver uma chave para ser usada como a de codificação, na qual será enviada para a pessoa que deve receber as informações. Conhecida como chave pública. Após essa chave ser criada, o próximo passo vai ser criar uma para fazer a decodificação. Que será a que chamamos de chave privada, e deve ser secreta. Alguns exemplos são de chaves privadas são: • El Gamal: Criado pelo estudioso de criptografia egípcio Taher Elgamal em 1984. Como forma de segurança utiliza um problema muito conhecido, o “logaritmo discreto”, dificultando assim sua decodificação; • RSA (Rivest, Shamir and Adleman): Desenvolvido por três professores do MIT, talvez seja o algoritmo mais usado e bem-sucedido, considerado por muitos, é claro. O seu funcionamento não é nada mais do que utilizar dois números, esses que devem ser obrigatoriamente primos, multiplicando-se estes, se obtém um novo valor. Nesse sistema, a chave conhecida como privada será os números multiplicados, logo, o novo valor será a chave conhecida como pública. Utilizada em sites de compra e em mensagens. 4.4 - Redes Sem Fio Essas redes de wireless não são muito recomendadas por abrirem uma grande brecha entre os dados, gerando assim uma enorme falta de segurança dos 13 mesmos. Pelo fato de que os dados, com qualquer conhecimento básico técnico, podem ser roubados facilmente. Dito isso, a criação de técnicas com chaves criptográficas para tornar essa classe de comunicação utilizável foi quase que obrigatório. Para que assim os usuários pudessem realizar serviços mais pessoais, como por exemplo uma transação financeira, direto de suas casas com mais privacidade e segurança. Não apenas para isso, um bom uso também é para que as empresas possam fazer um tipo de conexão melhor com seus clientes por meio dessas redes e afins com uma maior segurança. Os tipos de criptografia mais usados nas redes wireless são: • WEP: Esse método se baseia em utilizar o algoritmo RC4 e uma chave conhecida como secreta, esta que vai ser compartilhada, somente entre receptor e o emissor. Este método deve conter um roteador que deve estar conectado com todos os pontos de acesso, e todos devem, obrigatoriamente, utilizar essa mesma chave, para que possa haver o funcionamento deste método. O transmissor deve combinar o conteúdo de um pacote de dados com uma verificação do mesmo. Esse processo deve ser feito para todos os pacotes de dados solicitados, por envio em qualquer sentido. Neste método, o transmissor deve criar Vetor de Inicialização (IV ou Initialization Vector) para cada um dos pacotes, que combinado com uma das chaves e é usado para então fazer a criptografia do mesmo. Após esse processo deve ser feita a decodificação do pacote, que consiste no receptor gerar seu próprio pacote, para que assim possa decodificar o mesmo e terminar o processo de codificar e decodificar. Em teoria, a tática lógica e fácil de utilizar apenas a chave secreta e compartilhada é mais arriscada do que essa, pois sua violação é mais difícil, pelo fato de conter um bit de um dado específico. Porém, um invasor poderá teracesso ao tráfego de informações ou até mesmo acesso à rede, mas somente se uma chave compartilhada estiver corrompida; 14 • WPA e WPA2: Este método de certificação tem sua política de segurança com base no seguinte padrão: “Wi-Fi Alliance”. Este padrão é utilizado tanto em redes wireless quanto nas redes locais, sendo acolhido por diversas empresas e também se estendendo até mesmo as redes domésticas de uso comum a todos. Eles permitem autenticação livre para checar e fazer a verificação de criptografia avançada e usuários individuais. Fornecendo sua criptografia em empresas, como WPA, e a WPA2, denominada a próxima geração de segurança em redes sem fio, é muito utilizada por várias áreas governamentais ao redor do mundo. O WPA2 com AES é a novidade, tanto para o uso pessoal quanto para o corporativo. Para quem utiliza esse método em casa, ele assegura um excelente sistema de segurança e, aos usuários corporativos, permite adicionar um servidor de autenticação com a criptografia, para que possa haver o maior controle dos usuários em conjunto. 4.5 - Assinatura Digital Com seu uso maior uso sendo com chaves públicas, a Assinatura Digital é um recurso muito conhecido. É basicamente um meio de descobrir se certo documento eletrônico é verdadeiro ou falso. O receptor recebe um documento que assinado digitalmente utiliza uma chave pública fornecida por quem enviou para se certificar de sua origem. Não só isso, a chave é entregue junto ao documento, feito isso, qualquer alteração que seja feita nas informações vai imediatamente invalidar o documento. 4.6 - Criptografia Quântica Este método de codificação de dados difere dos demais métodos criptográficos pelo fato de não utilizar um segredo nem um contato prévio entre as partes. 15 Ela também permite a detecção de invasores e é muito mais segura, mesmo que o invasor tenha um conhecimento computacional elevado. Uma de suas desvantagens é o seu elevado custo de implementação. Outro fato limitante para a adoção dessa técnica é a taxa de erros na transmissão dos fótons, seja por ondas de rádio ou fibra ótica. Até agora, os melhores resultados foram obtidos através de fibras de altíssima pureza, abrangendo uma distância de aproximadamente 70 km. 16 5 - Dissertação No nosso trabalho semestral sobre criptografia utilizaremos um tipo de criptografia conhecida como ASCII, que utiliza de chaves simétricas, ou seja, a criptografia e a descriptografia são feitas com a mesma chave. ASCII que venho do Inglês “American Standard Code for Information Interchange”; “Código Padrão Americano para o Intercâmbio de Informação”, com a pronuncia “Áski”; É um código binário que codifica um conjunto de 128 sinais, 95 sinais gráficos contendo sinais de pontuação, sinais matemáticos e letras do alfabeto latino. E 33 sinais de controle, utilizando apenas 7 bits para mostrar e representar todos os seus símbolos. Nos anos 60 o código foi adotado como padrão. Isso permitiu que a codificação de caracteres em 8 bits, dando a possibilidade de formação de 256 caracteres. Se repararmos bem dar para perceber que cada byte possui 8 bits, os que não forem utilizados na tabela ASCII, pode ser usado de formas diferentes. Como por exemplo um padrão de UFT-8 bit que utiliza bit excedendo dos primeiros bytes para indicar que o Code point terá um valor, que ultrapassa os vários valores utilizados na tabela ASCII(acima de 127), são necessários mais bits para serem representados. A Microsoft já utilizou esse bit passando para a codificação de caracteres adicionais no Windows Code Page. Algumas outras utilizações do bit excedente é também é informar a paridade em transmissões assíncronas de baixa velocidade. Por tanto a existência de um Bit que é excedente em cada byte cria oportunidades para utiliza os 7 bits da Tabela ASCII, e em diferentes codificações que não são priorizadas, algumas delas as vezes chamadas de “Tabela ASCII” que passa uma ideia que a Tabela ASCII foi então oficialmente ampliada para utilizar 8 bits, um fato que na verdade nunca ocorreu. A função da codificação ASCII é usada para representar tetos em computadores, e até mesmo equipamento de comunicação, entre outras funções e dispositivos que trabalham com texto e codificações. Ela foi desenvolvida a partir de 1960, com grande parte da codificação de caracteres moderna que herdaram como base. Os sinais não são e nem pode ser imprimido, pois conhecidos como caracteres 17 de controle, são muito e amplamente utilizados em vários dispositivos de comunicação que afetam o processamento dos textos. Além disso o código ASCII é utilizado para conversação de código binário, para letras do alfabeto tanto Minúsculas quanto Maiúscula. 5.1 - Tabela de Caracteres em ASCII Caractere Código ASCII Código hexadecimal NUL (Nulo) 0 00 SOH (Start of heading) 1 01 STX (Start of text) 2 02 ETX (End of text) 3 03 EOT (End of transmission) 4 04 ENQ (Enquiry) 5 05 ACK (Acknowledge) 6 06 BEL (Bell) 7 07 BS (Backspace) 8 08 TAB (Tabulação horizontal) 9 09 LF (Line Feed, salto de linha) 10 0A VT (Vertical tabulation, tabulação vertical) 11 0B FF (Form feed) 12 0C CR (Carriage return, retorno do carro) 13 0D SO (Shift out) 14 0E SI (Shift in) 15 0F DLE (Data link escape) 16 10 DC1 (Device control 1) 17 11 DC2 (Device control 2) 18 12 DC3 (Device control 3) 19 13 DC4 (Device control 4) 20 14 NAK (Negative acknowledgement) 21 15 SYN (Synchronous idle) 22 16 ETB (End of transmission block, fim de bloco de transmissão) 23 17 CAN (Cancel, cancelar) 24 18 EM (End of medium, fim do meio) 25 19 SUB (Substitute, substituto) 26 1A ESC (Escape, cararctere ESC) 27 1B FS (File separator, separador de arquivo) 28 1C GS (Group separator, separador de grupo) 29 1D RS (Record separator, separador de registro) 30 1E US (Unit separator, separador de registro) 31 1F SP (Space, espaço) 32 20 ! 33 21 " 34 22 # 35 23 18 $ 36 24 % 37 25 & 38 26 ' 39 27 ( 40 28 ) 41 29 * 42 2A + 43 2B , 44 2C - 45 2D . 46 2E / 47 2F 0 48 30 1 49 31 2 50 32 3 51 33 4 52 34 5 53 35 6 54 36 7 55 37 8 56 38 9 57 39 : 58 3A ; 59 3B < 60 3C = 61 3D > 62 3E ? 63 3F @ 64 40 A 65 41 B 66 42 C 67 43 D 68 44 E 69 45 F 70 46 G 71 47 H 72 48 I 73 49 J 74 4A K 75 4B L 76 4C M 77 4D N 78 4E O 79 4F P 80 50 Q 81 51 R 82 52 S 83 53 T 84 54 19 U 85 55 V 86 56 W 87 57 X 88 58 Y 89 59 Z 90 5A [ 91 5B 92 5C ] 93 5D ^ 94 5E _ 95 5F ' 96 60 a 97 61 b 98 62 c 99 63 d 100 64 e 101 65 f 102 66 g 103 67 h 104 68 i 105 69 j 106 6A k 107 6B l 108 6C m 109 6D n 110 6E o 111 6F p 112 70 q 113 71 r 114 72 s 115 73 t 116 74 u 117 75 v 118 76 w 119 77 x 120 78 y 121 79 z 122 7A { 123 7B 124 7C } 125 7D ~ 126 7E Toque de supressão 127 7F 20 5.3 - Tabela de caracteres em ASCII estendido O código ASCII foi inventado pela língua inglês, então por esse motivo não tem caracteres acentuado, e nem especifico de outro idioma. Se caso precise codificar esse tipo de caractere será necessário utilizar outro código. O código então foi estendido para 8 bits, para poder codificar mais caracteres, conforme falado no começo da dissertação. Ele não é o único que utiliza e depende da plataforma. Os dois jogos de caracteres ASCII, estendidos mais frequentemente utilizados são ASCII e estendido OEM, aquele que equipava as primeiras maquinas de tipo PC da IBM: Também há o código ASCII estendido ANSI, utilizado pelos sistemas operacionais recentes: 21 Um termo um pouco peculiar, “aparte” da criptografia, mas com uso de seus meios é arte ASCII é baseada justamente no uso de caracteres para criar desenhos e mensagens. Ela é bastanteantiga, pois sempre foi usada nos computadores. A arte pode ser construída da maneira que o artista quiser: tanto em preto e branco ou colorida. Com certeza, se você costumava usar o mIRC (hoje em dia não mais comum), recebia algumas imagens geradas automaticamente na tela que utilizavam códigos ASCII, um fato curioso que vale ressaltar, mostrando a inúmeras possibilidades que se obtém com a tecnologia , e de certa forma uma parte da criptografia mesmo que pequena http://www.baixaki.com.br/download/mirc.htm 22 6 – Projeto (Estrutura) Do Programa Com base nas pesquisas e colhimento de informações adquiridas, reunimos para ter uma separação de ideias e a escolha de que ideia poderiam embasar o desenvolvimento. É com esta decisão se foi escolhido um meio simples e eficaz para exemplar um modelo de criptografia para usurário e o trabalho. Com essa conclusão de ideias e desse levantamento foi feito uso da Tabela ASC, e utilizando uma chave já embutida no programa. Ao longo deste programa, foi desenvolvido para ser simples e rápido foram criadas várias funções para facilitação na hora de programar cada ação diferente, entre elas a utilizada para realizar as ações de criptografar e descriptografar. Fizemos uso de poucas bibliotecas para o desenvolvimento deste projeto, sendo a mais a “string.h” agindo diretamente com a cadeia de caracteres, tanto na mensagem inserida pelo usuário quanto após a mensagem estiver decifrada. Logo após a chamada das bibliotecas, nas linhas 5 e 6 são definidas a questões quanto a chave para a cifrar e decifrar, sendo esta não exposta ao usuário e sim já definida podendo ser altera somente por quem for alterar o código fonte, elas acabam definindo qual será ela e a leitura da mesma em valor inteiro. As linhas 9,10 e 12 dizem respeito da declaração de variáveis sendo a “principalTEXT” e “TAMANHO_princ” que serão para a leitura e uso da mensagem que sera inserida pelo usuário, onde será armazenado o texto em vetor para após armazenado ser chamado nas funções em relação a cifragem e decifragem da mensagem. Da linha 14 a linha 31, trata-se sobre a primeira função, cifrar, caso o usuário escolha esta função no menu ele será redirecionado para esta função, que tem como ação a leitura do texto digitado pelo usuário. Após armazenado no vetor será utilizado o valor correspondente de cada caractere digitado pelo usuário na tabela ASC, sendo a assim pegando o valor referente a letra digitada e multiplica pela chave também com se valor correspondente da tabela ASC para cada caractere. Da linha 33 a linha 64 se refere a função “reverter()” é criada a função para descriptografar o arquivo criptografado, é feito a utilização de ponteiro para fazer a 23 leitura de um arquivo que a função criptografar cria, enquanto não for o fim do arquivo, ele vai fazer a leitura dos valores inteiros que estão no arquivo e dividir pelo valor da chave, obtendo assim o texto original antes de ser criptografado. Da linha 66 a linha 109, foi desenvolvido o menu para a criptografia, onde contém maior parte dados de saída de dados, mostrando textos para que o usuário saiba como prosseguir para que consiga realizar todas as ações corretamente e chamado a função “Criptografar()” para realizar o procedimento para que a mensagem que o mesmo digitou seja cifrada. Entre as linhas 111 e 135, foi criado a função para o menu de descriptografar, contendo informações a respeito, quando chama redireciona o usuário para uma tela mostrando a ele qual será os passos para realizar a descriptografia e chamando a função “reverter()” para continuar com os procedimentos. Durante as linhas que vão de 137 a 168, foi realizada a função Menu, esta função será a primeira que aparecera para a tela do usuário que estiver acessando o programa, ela é responsável a disponibilizar aos usuários todas as opções para que ele escolha o que deseja fazer neste programa. Através desse menu principal que aparece as escolhas na qual o usuário deseja prosseguir, tendo 3 opções de escolha, todas diferentes e chamando outras funções já criadas para fazer a ação escolhida. Sendo neste menu contido as seguintes opções: • “1 - Digitar o texto a ser criptografado" • “2 – Descriptografar " • “3 – Fechar " Sendo utilizado um switch para que de acordo com a escolha feita pelo usuário e chamada determinada função para realizar determinada ação. E concluindo, entre as linhas 170 e 173, são para a função MAIN do programa, e ela está sendo utilizada apenas para fazer a chamada de outra função, sendo esta outra a “Menu()” , que seria a principal função, mostrando todas a opções para o usuário e de acorda com a escolha do mesmo acaba chamando as demais funções para realizar todas as ações. E foi com essa estrutura que foi feito a criação do programa, o projeto em geral 24 tive o intuito de ser fácil de ser feita a estrutura e com fácil entendimento da função dele, sendo de acordo com a escolha do usuário frente as possibilidades que o programa oferece. Ante de iniciarmos o projeto, foi feito o levantamento das possibilidades na qual poderia ser criado o programa, modelo, funções, uso Vetores, ponteiros etc. Sendo assim que não ultrapasse muito o conhecimento que tínhamos antes de iniciarmos, inicialmente sendo assim, e ao decorrer do projeto pudéssemos aprimorar o programa, trazendo novas função, deixando-o mais enxuto e prático. Com as pesquisas feitas e estudos sobre diversos modelos de criptografia, sendo desde quando era um modelo “não computacional” até as inúmeras possibilidades que estão disponíveis na atualidade, foram encontrados vários exemplos de bom agrado e que sem encaixavam no projeto programa, um deste exemplos foi o uso da tabela ASCII. Então optado pela referida tabela, motivos da escolha foi a facilidade em utilizar esse método e o fácil entendimento de sua funcionalidade já que a tabela e bem conhecida nos meios computacionais, a tabela ASCII que tem seu significado de: American Standard Code for Information Interchange. Esta tabela que foi criada por volta de 1960, é método que faz com que a assimilação de os caracteres o transformando em uma representação numérica, podendo ser em Decimal, binário ou Hexadecimal, chegando a abranger até caracteres que não são do padrão americano. Foi com base neste conceito que projetamos o programa, para criptografar e descriptografar a mensagem que o usuário digitar, mensagem esta com uma restrição para apenas 128 caracteres, a funcionalidade do programa consiste em pegar a mensagem que usuário digitou, e fazer as seguintes ações: (Suponhamos que usurário digite a palavra “ texto “ ) • Para criptografar é feito este processo: O programa pega a palavra ou frase digitada pelo usuário e a transforma em ASCII: t e x t o 116 101 120 116 111 25 Após esse obter esse valor ele transformar a CHAVE em ASCII: C a b e c a D e M a r t e l o 67 97 98 101 99 97 100 101 77 97 114 116 101 108 111 Com estes dois dados é feito o cálculo, multiplicando o valor da 1ª Letra da palavra que usuário digitou pelo valor da 1ª letra da chave, e assim subsequentemente como no exemplo: t e x t o 116 101 120 116 111 x x x x x C a b e c a D e M a r t e l o 67 97 98 101 99 97 100 101 77 97 114 116 101 108 111 Palavra Criptografada t e x t o 7772 9797 11760 11716 10989 • Já o processo de reversão é feito da seguinte forma: No processo ele Converte da tabela ASCII para caracteres normais fazendo a operação reversa ao de cifrar: 26 Palavra Criptografada t e x t o 7772 9797 11760 11716 10989 ÷ ÷ ÷÷ ÷ C a b e c a D e M a r t e l o 67 97 98 101 99 97 100 101 77 97 114 116 101 108 111 ___________________________________________________________________________________ 116 101 120 116 111 t e x t o Sendo assim a funcionalidade do programa, utilizando a também ASCII para fazer a criptografia e reverte-la, e sempre salvando em um Arquivo especifico o texto criptografado. 7 – Relatório Com As Linhas De Código Do Programa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> char CHAVECRIPT[]="CabecadeMartelo"; int TAMANHOCHAVE=strlen(CHAVECRIPT); //---------------------------------------- char principalTEXT[128]; int TAMANHO_princ=128; int criptoTEXT[128]; int cifrar(){ int CHAVE_ta; for(int i=0; i< strlen(principalTEXT) ; i++){ criptoTEXT[i]=principalTEXT[i]; } for(int aux=0; aux < strlen(principalTEXT) ; ){ for(int i=0;i<TAMANHOCHAVE; i++){ CHAVE_ta = CHAVECRIPT[i]; criptoTEXT[aux] *= CHAVE_ta; aux++; } } return true; 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 } int reverter(){ FILE *arquivo; int vl; int dppchave; int dpptexto; arquivo = fopen("C:\\aps\\secreto.txt","r"); if(arquivo==NULL){ return false; } dppchave=0; dpptexto=0; while(!feof(arquivo)){ fscanf(arquivo,"%d",&vl); vl /= CHAVECRIPT[dppchave]; principalTEXT[dpptexto] = (char)vl; dpptexto++; if(dppchave==TAMANHOCHAVE-1){ dppchave=0; }else{ dppchave++; } } fclose(arquivo); return true; 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 } void MCriptografar(){ printf("\n\t Menu Criptografia"); char auxiliar[TAMANHO_princ]; char stop; int ok; FILE *arquivo; printf("\n\nPor favor Insira o texto: "); gets(auxiliar); if( strlen(auxiliar) <= TAMANHO_princ){ strcpy(principalTEXT,auxiliar); printf("\n\nTexto pronto para criptografar!"); ok=true; if(ok){ if(cifrar()){ printf("\n\nCriptografia concluida!"); arquivo = fopen("C:\\aps\\secreto.txt","wt"); if(arquivo==NULL){ printf("\n\nErro - Nao foi possivel fazer criacao do Arquivo\n\n"); }else{ for(int i=0; i < strlen(principalTEXT); i++){ fprintf(arquivo,"%d ",criptoTEXT[i]); } } fclose(arquivo); 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 printf("\n\nPara abrir a pasta do arquivo gerado, pressione qualquer tecla\n"); scanf("%c",&stop); setbuf(stdin,NULL); system("explorer C:\\aps\\"); }else{ printf("\n\nErro - Nao foi possivel criptografar""\n\n"); } } } system("pause"); } void R_arquiv(){ char stop; printf("\n\nComo Reverte a criptografia:"); printf("\n\n 1 - Apenas Confira se o Arquivo \"secreto.txt\" Esta no local adequado"); printf("\n\n 2 - Volte para o programa para proseguir"); printf("\n\n\n Pressione qualquer tecla para vizualizar a pasta"); scanf("%c",&stop); setbuf(stdin,NULL); system("explorer C:\\aps\\"); printf("\n\nPressione qualquer tecla depois que o arquivo ja estiver no local\n"); scanf("%c",&stop); setbuf(stdin,NULL); 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 if( reverter()){ printf("\n Descriptografia concluida\n"); system("pause"); system("cls"); printf("\n Mensagem Descriptografada: \"%s\"\n\n",principalTEXT); system("pause"); }else{ printf("\n Erro - Nao foi possivel reverter o processo ""\n\n"); system("pause"); } } void Menu(){ int op; while(1){ system("cls"); if (CreateDirectory ("C:\\aps", NULL)){ printf ("Pasta criada com sucesso!\n\n");} printf("\n\t Menu Criptografia"); printf("\n\n1 - Insirir o texto para ser cifrado (CRIPTOGRAFADO)"); printf("\n\n2 - Reverter o Processo de Criptografia"); printf("\n\n3 - Fechar"); printf("\n\nOpcao: "); scanf("%d",&op); setbuf(stdin,NULL); switch (op){ case 1: system("cls"); MCriptografar(); break; case 2: system("cls"); 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 R_arquiv();break; case 3: system("pause"); exit(0); break;default: printf("ERRO - Opcao incorreta"); } } } int main(){ Menu(); return 0; } 8 - Referências Bibliográficas MEDEIROS, Fávio. Criptografia tecnologia presente. [S.l.: s.n.], 2015. 1 p. Disponível em: <https://goo.gl/ZsZLfe>. Acesso em: 23 nov. 2018. COSTA, Celso. Introdução à Criptografia. [S.l.]: CEDERJ, 2010. 106 p. v. 1. Disponível em: <https://goo.gl/H5b19P>. Acesso em: 23 nov. 2018. GALVÃO, Michele da Costa. Fundamentos em Segurança da Informação. [S.l.]: Pearson Education do Brasil, 2015. 111 p. ODEMIR M., Bruno. Criptografia: de arma de guerra a pilar da sociedade moderna. [S.l.: s.n.], 2017. 1 p. Disponível em: <https://goo.gl/DXzrZk>. Acesso em: 23 nov. 2018. BAHIANA, Monica. Introdução à computação cientifíca em C. [S.l.: s.n.], 2017. 1 p. Disponível em: <https://goo.gl/4yq5GX>. Acesso em: 23 nov. 2018. PILLOU, Jean. Código ASCCI. 2017. Disponível em: <https://br.ccm.net/contents/54-o-codigo-ascii>. Acesso em: 23 jul. 2018 PINTO, Pedro. História da Criptografia. 2013. Disponível em: <https://pplware.sapo.pt/informacao/conhea-a-historia-da-criptografia/>. Acesso em: 23 jul. 2018. CASTELLÓ, Thiago; VAZ, Verônica. História da Criptografia. 2017. Disponível em: <https://pplware.sapo.pt/informacao/conhea-a-historia-da- criptografia/https://www.gta.ufrj.br/grad/07_1/ass-dig/HistriadaCriptografia.html>. Acesso em: 23 jul. 2018. ROMAGNOLLO, Cesar. O que é criptografia. 2017. Disponível em: <https://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia>. Acesso em: 23 jul. 2018 SCHUNCKE, Alex. Os principais tipos de criptografia. 2012. Disponível em: <https://www.oficinadanet.com.br/post/9424-quais-os-principais-tipos-de- criptografia>Acesso em: 08 nov. 2018 FURTADO, Gilberto. Tipos de criptografia mais utilizadas. 2008. Disponível em: <https://gilbertofurtado.wordpress.com/2008/03/14/tipos-de-criptografia-mais- utilizados/>. Acesso em: 08 nov. 2018. DIAS, Rafael. Algoritmos de criptografia: tipos e como funcionam. 2016. Disponível em: <https://www.segurisoft.com.br/criptografia/analise-algoritmos- criptografia/>. Acesso em: 08 nov. 2018. ARRIGONI,Ricardo. Tabela ASCII. [S.l.: s.n.], 2018. 1 p. Disponível em: <https://www.ricardoarrigoni.com.br/tabela-ascii-completa/>. Acesso em: 08 nov. 2018.
Compartilhar