Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Criptográficos Simétricos Caracterizam-se pela utilização de chaves idênticas para cifração e para decifração, ou pelo menos, que uma possa ser derivada da outra de forma simples e direta. O maior problema de tais sistemas está na necessidade de um canal seguro para a transmissão (distribuição) das chaves, que devem ser mantidas secretas e do conhecimento apenas dos participantes da comunicação em questão. Pergunta típica: por quanto tempo se deve usar uma mesma chave? Resposta: o tempo de validade de uma chave depende de muitos fatores. Em determinados sistemas pode ser conveniente usar uma chave para cada mensagem. Em outros, pode-se utilizar uma mesma chave por períodos longos. Sistemas Criptográficos que fazem parte da história da criptografia. Neste tópico vamos tratar de alguns sistemas simples e de fácil implementação, que fazem parte da história da criptografia, que servem para sedimentação de conceitos e de base para o desenvolvimento de outros algoritmos criptográficos. a) Cifra de César Originalmente consistia de uma substituição monoalfabética com a chave igual a 3, e um alfabeto de 26 caracteres, realizando uma transformação criptográfica da forma: ci = (mi + k ) mod 26 Onde : mi representa um caractere do texto em claro; ci representa um caractere do criptograma; k = 3 ( chave); Enfim, esta cifra realizava a substituição de cada caractere da mensagem por outro que se localiza três posições a frente, considerando a seqüência alfabética. Exemplo-1: - sempre que aparecia o caractere ‘A’ era substituído pelo caractere ‘D’ - sempre que aparecia o caractere ‘B’ era substituído pelo caractere ‘E’ - sempre que aparecia o caractere ‘C’ era substituído pelo caractere ‘F’ . . . sempre que aparecia o caractere ‘Z’ era substituído pelo caractere ‘C’ Generalizando a cifra de César. As cifras de substituição com um algoritmo que represente apenas um deslocamento dos caracteres na ordem alfabética, são geralmente conhecidas como cifra de César. Ex.: A B C D E F ... T V W X Y Z G H I J K ... A B C D E F Pode-se usar a chave k para k = 1, 2, 3, ... , 255, com alfabeto de 256 caracteres (alfabeto ( código ASCII). Obs.: Mostrar programa e exemplos para o código ASCII Program Cesarasc; uses crt; var saida, opcao, caract, chave: byte; arq1 : file of byte; arq2 : file of char; nomearq1, nomearq2 : string[32]; begin clrscr; writeln('Nome do arquivo origem ? '); readln(nomearq1); writeln('Nome do arquivo destino ? '); readln(nomearq2); assign(arq1,nomearq1); assign(arq2,nomearq2); reset(arq1); rewrite(arq2); write(' Entre a chave : ');readln(chave); writeln(' Para criptografar Digite : 1 '); writeln(' Para decriptografar Digite : 2 '); read(opcao); while not eof(arq1) do begin read(arq1,caract); if opcao = 1 then saida := (caract + chave) mod 256 else begin if (caract - chave) < 0 then saida := caract - chave + 256 else saida := caract - chave; end; write(arq2,char(saida)); end; writeln; writeln(' F I M'); end. � b) Cifra de Vigenère Esta cifra pode ser descrita e explicada com o uso de uma tabela, na qual existe uma quantidade de alfabetos igual à quantidade de caracteres dos alfabetos. A partir do alfabeto-base, se constrói os demais alfabetos, realizando-se um deslocamento circular. Ex.: Alfabeto-base : ABCD ------------------- YZ Alfabeto-1 : BCDE ------------------- ZA Alfabeto-2 : CDEF ------------------- AB Alfabeto-25 : ZABC ------------------ XY A tabela é constituída de três partes, conforme se segue: alfabeto para as chaves; alfabeto para o texto em claro e alfabetos para o texto cifrado. Chaves Texto em claro � � A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Tabela de alfabetos para o método de Vigenère. Para cifrar, usa-se uma palavra chave, e escreve-se esta palavra repetidamente sobre o texto claro. A cifração é obtida na interseção da coluna da letra chave com a linha da letra do texto claro. Para decifrar usa-se o processo inverso. Escreve-se o texto cifrado com a palavra chave repetida tanto quanto necessário. Procura-se na coluna da letra chave até encontrar a letra do texto cifrado, e então seguindo a linha desta até a entrada (à esquerda), obtém-se a letra do texto claro. Exemplo. Texto claro : Comunicação chave : Brasil criptograma: ? Cifração chave B R A S I LB R A S I texto C O M U N I C A C A O Criptograma D F M M V T D R C S W Decifração Chave B R A S I L B R A S I Criptograma D F M M V T D R C S W texto C O M U N I C A C A O Exercícios Cifre. Texto em claro: ALEMANHA Chave: TANGO Decifre. Criptograma: NQFASHI Chave: VINHO Generalizando a cifra de Vigenère. Pode-se utilizar números ou simplesmente um conjunto de bits, em vez de caractere. Assim, as operações de cifração e de decifração podem ser realizadas com o operador módulo, sem o uso da tabela de Vigenère. Nesse contexto em que os caracteres são substituídos por números. A variedade de alfabetos é infinita. Exemplos de Alfabetos: Alfabeto-1: 0 1 2 3 4 ; Alfabeto-2: 0 1 2 ... 255 (conjuntos de 8 bits ( 256 caracteres: Ex. Código ASCII); Alfabeto-3: 0 1 2 ... 65535 (conjuntos de 16 bits); Alfabeto-4: 0 1 2 ... 18446744073709551615 (conjuntos de 64 bits); Exercício empregando o alfabeto-1. Cifração do texto: 42314; Chave: 32 e m = 5. Tx = elementos do texto; Ch = elementos da chave; Cr = elementos do criptograma. m = cardinalidade do alfabeto (quant. de elementos do alfabeto) Para cifrar: (Tx + Ch) mod m = Cr ; Para de decifrar: (Cr - Ch) mod m = Tx Usando a tabela de Vigenère. 0 1 2 3 4 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 4 0 1 2 3 Chave: 3 2 3 2 3 Texto: 4 2 3 1 4 Cript : 2 4 1 3 2 Usando a operações modulares. (Tx + Ch) mod m = Cr (4 + 3) mod 5 = 2 (2 + 2) mod 5 = 4 (3 + 3) mod 5 = 1 (1 + 2) mod 5 = 3 (4 + 3) mod 5 = 2 Cript : 2 4 1 3 2 Implementação da cifra de Vigenère utilizando operação modular para o código ASCII. Program vigenere; uses crt; var saida, opcao, caract, k: byte; arq1 : file of byte; arq2 : file of char; chave, nomearq1, nomearq2 : string[32]; chavenum : array [1..32] of byte; i : longint; begin clrscr; writeln('Nome do arquivo origem ? '); readln(nomearq1); writeln('Nome do arquivo destino ? '); readln(nomearq2); assign(arq1,nomearq1); assign(arq2,nomearq2); reset(arq1); rewrite(arq2); write(' Entre com a quantidade de caracteres da chave : ');readln(k); writeln(' Entre com a chave : '); readln(chave); for i := 1 to k do chavenum[i] := ord(chave[i]); writeln('Para criptografar Digite: 1'); writeln('Para decriptografar Digite: 2'); read(opcao); i:=0; while not eof(arq1) do begin read(arq1,caract); if opcao = 1 then saida := (caract + chavenum[1+ i mod k]) mod 256 else begin if (caract - chavenum[1 + i mod k]) < 0 then saida := caract - (chavenum[1 + i mod k]) + 256 else saida := caract - (chavenum[1 + i mod k]); end; write(arq2,char(saida)); inc(i); end; writeln; writeln(' F I M'); end. c) Sistema de Gronsfeld Neste sistema a cifração é realizada substituindo-se cada caractere do texto claro por um outro caractere determinado pela chave criptográfica. A chave é constituída por uma seqüência de dígitos (de 0 a 9). Trata-se de um sistema polialfabético com 10 alfabetos, tendo em vista que, cada caractere pode ser substituído por outro até 9 posições a direita. Exemplo. Alfabeto: ABCDEFGHIJKLMNOPQRSTUVWXYZ Cifração - Texto claro: LIVRO chave: 192 criptograma: ? Cifração 1 9 2 1 9 L I V R O criptograma : M R X S X Exercícios. 1) Cifração - Texto claro: AMBULATORIO - Chave: 285 2) Decifração – Criptograma: QLKQFPDVPFPR - Chave: 43891 3) Criptoanálise (encontre a chave). - texto em claro: VENANCIO - texto cifrado : CFSHOHPP ROT-13 Disponível no: http://pt.wikipedia.org/wiki/ROT13 ROT13 Origem: Wikipédia, a enciclopédia livre. Ir para: navegação, pesquisa �� �� ROT13 é uma cifra de César, um tipo de cifra de substituição ROT-13 (ou rot13, rot-13, Rot13, etc) é o nome que se costuma usar para um procedimento simples mas eficaz para garantir que textos eletrônicos não sejam lidos por distração ou acidente. ROT-13 vem do inglês, ROTate by 13 places, "ROTacionar 13 posições". Especificamente, a cifra ROT-13 tem se mostrado útil principalmente para proteger endereços de correio eletrônico (evitando SPAM, o envio de mensagens não solicitadas) e para "proteger" mensagens que o remetente pode preferir não ler - cometários sobre livros, filmes, ou séries, piadas politicamente incorretas, esse tipo de coisa. Como era de se esperar, o ROT-13 é usado principalmente em grupos de discussão (como os fóruns do Universo OnLine" e os "grupos de notícias" das hierarquias "alt." e "rec." da Usenet) e em listas de discussão como as dos Yahoo. Um detalhe importante: não há qualquer diferença entre o procedimento para codificar um texto em ROT-13 e o procedimento para decodificá-lo; simplesmente aplicamos o mesmo procedimento uma segunda vez. Em termos técnicos, ROT-13 é uma cifra de César aplicável apenas aos caracteres alfabéticos (da língua inglesa) e com passo 13. Um algoritmo mais recente e menos popular, o ROT-47, gira todos os caracteres ASCII de códigos entre 33 ("!") e 126 ("˜" ou til) e usa o passo 47. A vantagem do ROT-47 consiste no fato de que sinais de pontuação, algarismos numéricos e muitos caracteres especiais também são embaralhados. 0 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 A B C D E F G H I J K L M N O P Q R S T V W U X Y Z Exemplos: Cifrar: Texto em claro: DETALHE → (3,4,19,0,11,7,4) Cifração: (n + ch) mod 26 ((3,4,19,0,11,7,4) + (13,13,13,13,13,13,13)) mod 26 = (3+13, 4+13, 19+13, 0+13, 11+13, 7+13, 4+13) mod 26 = (16,17,6,13,24,20,17) → QRGNYVR Criptograma: QRGNYVR → (16,17,6,13,24,20,17) Decifração: (n + ch) mod 26 ((16,17,6,13,24,20,17)+ (13,13,13,13,13,13,13)) mod 26 = (16+13, 17+13, 6+13, 13+13, 24+13, 20+13, 17+13) mod 26 = (3,4,19,0,11,7,4) → DETALHE Exemplo. Chave: 210 Cifrar os caracteres “A S” em ASCII : A =65 e S = 83 (A + Chave) mod 256 = (65 + 210) mod 256 = 19 (S + Chave) mod 256 = (83 + 210) mod 256 = 37 Decifrar os valores 19 e 37 (19 - Chave) mod 256 = (19 – 210 + 256) mod 256 = 65 ( A (37- Chave) mod 256 = (37 – 210 + 256) mod 256 = 83 ( S Texto cifrado 2 3 1 Caracteres chave Caracteres do texto cifrado Caracteres do texto claro 1 2 3 Caractere chave Caracteres do criptograma Caracteres do texto claro Valendo ponto para a primeira avaliação (2,0 pontos). Cifre seu último nome utilizando a tabela de vigenère para alfabeto de 26 caracteres. Chave: NIL. Valendo ponto para a primeira avaliação (2,0pontos). Cifre sua data de nascimento, no formato DDMMAAAA, usando operações modulares. Alfabeto: 0,1,2, ..., 9 Chave: 723 A cifração é realizada com o comando: saida:=(caract+chavenum[1+i mod k])mod256 Ex: Chave = bC3 ; Caract = A; Chavenum[1]=98; Chavenum[2]=67; chavenum[3]=51; ASCII (A) = 65; saida:=(caract+chavenum[1+i mod k])mod256 saida:=(65+98)mod256; saida:= 163 chavenum[1+imod k] chave = bC3 ; k =3; i=0 chavenum[1]= 98 i=1 chavenum[2]= 67 i=2 chavenum[3]= 51 i=3 chavenum[1]= 98 i=4 chavenum[2]= 67 i=5 chavenum[3]= 51 i=6 chavenum[1]= 98 Valendo ponto para a primeira avaliação (2,0 pontos). Conhecendo o criptograma “ HNIJAQVRVU “ e o texto em claro correspondente “ALEATORIOS“, tente decifrar os criptogramas seguintes: a) UWQNYQW b) AGGWPEEB c) HSAZPIUD Ocorreu mudança de chave? Um ponto para a primeira avaliação (3,0 pontos). Implementação do ROT128. Vale em qualquer linguagem de programação. O programa deve cifrar arquivos de qualquer tipo
Compartilhar