1 Introduç˜ao 2 Método 3 Material

Transcrição

1 Introduç˜ao 2 Método 3 Material
Instituto de Computação
Universidade Estadual de Campinas
2o¯ Trabalho Prático
MO421/MC889 - Introdução à Criptografia
Prof. Julio López
1o¯ Semestre de 2009
1
Introdução
O trabalho objetiva implementar um método de criptografia de imagens que permite comparar visualmente as propriedades estatı́sticas de cifras distintas a partir de
imagens cifradas.
2
Método
Neste trabalho, é requisitada a implementação de dois métodos de cifração: a
cifra Afim e a cifra TEA. A cifra Afim é um caso mais geral da cifra de substituição
clássica que realiza uma transformação linear em cada caractere do texto claro. A
função de cifração é dada por Ea,b (x) = (ax + b) (mod m) e a função de decifração é
dada por Da,b (y) = a−1 (y − b) (mod m), com a e m coprimos. O par de inteiros (a, b)
é a chave da cifra. Para implementação em computadores, considera-se que m = 256 e
um byte é processado por vez.
A cifra TEA (Tiny Encryption Algorithm) é uma cifra de bloco minimalista que
utiliza técnicas modernas de cifração simétrica requerendo baixo poder computacional
para execução. Os detalhes da cifra são fornecidos no documento tea.pdf.
Um método possı́vel de cifração de imagens é considerar a imagem como uma
seqüência de bytes que especificam as componentes de cor RGB dos pixels da imagem
em seqüência. Pode-se implementar uma cifra qualquer em uma imagem completandose esta seqüência de bytes com zeros até que seu comprimento seja múltiplo do tamanho
do bloco da cifra.
3
Material
É fornecido um programa em C que cifra uma imagem no formato PPM utilizando
a Cifra de Vigenére. A Cifra de Vigenére é um método clássico de encriptação que
utiliza uma série de diferentes Cifras de César baseadas em caracteres de uma chave.
1
O código-fonte deste programa encontra-se no arquivo cifraimagem.c. Utilize este
arquivo para entender o método de cifração de imagens e a interface das rotinas que
implementam a leitura e escrita de imagens.
Para compilar este arquivo, execute:
$ gcc cifraimagem.c ppm.c -o cifraimagem
Para utilizar o programa em modo de cifração:
$ ./cifraimagem -e -v entrada.ppm saida.ppm
O programa pedirá o comprimento da chave e uma seqüência de inteiros que
especifica a chave:
Digite o tamanho da chave: 5
Digite a chave: 40 67 23 200 56
Para utilizar o programa em modo de decifração:
$ ./cifraimagem -d -v saida.ppm entrada.ppm
A chave deverá ser informada no formato descrito anteriormente.
Para converter imagens para o formato PPM, utilize o pacote ImageMagick :
$ convert arquivo_imagem imagem.ppm
4
Objetivo
O objetivo é implementar a cifra Afim e a cifra TEA e observar as propriedades
estatı́sticas das duas cifras a partir da execução do programa em imagens diferentes.
O modo de operação a ser utilizado para a cifra TEA é o modo ECB (Electronic CodeBook ), onde cada bloco deve ser cifrado com a mesma chave de forma independente.
A cifra Afim deve solicitar um par de inteiros (a, b) entre 0 e 255 como chave e checar
se a e 256 são co-primos. A cifra TEA deve solicitar uma seqüência de 4 inteiros de 32
bits como chave, representados em formato hexadecimal. O programa deve funcionar
corretamente em arquiteturas de 32 bits.
5
Entrega
É imprescindı́vel a entrega do programa final, implementando a cifração e a decifração utilizando as cifras Afim e TEA supracitadas e a confecção de um breve relatório
contendo imagens de exemplo que ilustrem as seguintes questões:
2
• Quais as diferenças perceptı́veis nas imagens produzidas pelas cifras de Vigenére,
Afim e TEA?
• A utilização da cifra TEA com o modo de operação ECB escolhido tem limitações
visı́veis? Observe como o método se comporta em imagens com regiões sólidas,
como a imagem de exemplo fornecida.
• Como podemos aperfeiçoar a utilização da cifra TEA? Implemente um método
aperfeiçoado adicionando uma opção -t2 no programa principal e ilustre as melhorias obtidas com este novo método.
3

Documentos relacionados

Trabalho Prático 1

Trabalho Prático 1 No fundo, é uma variante da cifra de César em que, em vez de se transportar cada letra um número fixo de posições, esse número é determinado pela palavra-chave (a posição no alfabeto de ca...

Leia mais

Cifras por Blocos

Cifras por Blocos É utilizado um “vector de inicialização” (IV) previamente conhecido para iniciar o processo (fixo ou, preferencialmente, enviado cifrado em ECB). Obs.: se o IV for enviado em claro, o

Leia mais