|
|
O estudo da
codificação e decodificação de mensagens secretas é
denominado Criptografia. Os códigos secretos
foram bastante utilizados nas guerras, para transmitir
mensagens sem que o inimigo conseguisse compreendê-las.
Hoje em dia há um grande interesse no assunto, devido a
necessidade de se transmitir informações privadas em
vias públicas de comunicação, como a internet.
As cifras são os códigos
usados para transformar um texto comum em um texto
cifrado. O processo de converter um texto comum em
cifrado é chamado cifrar ou codificar,
e o processo inverso é chamado decifrar ou decodificar.
Vamos estudar as chamadas cifras de
Hill que são baseadas em transformações
matriciais. Para isto, utilizaremos a aritmética modular
e conceitos da Álgebra Linear, mais especificamente:
matrizes, eliminação Gaussiana, dependência linear e
transformações lineares.
Aritmética Modular
Definição: Dados um número
inteiro positivo e
dois inteiros
e
quaisquer, dizemos que
é equivalente a
módulo m, e escrevemos:
se
é um múltiplo inteiro de
.
Dado um módulo
,
qualquer inteiro é
equivalente, módulo
,
a um dos inteiros do conjunto:
denominado conjunto dos resíduos de
módulo
.
Teorema: Dados um
inteiro
e um módulo .
Seja R o resto da divisão de
por .
Então, o resíduo
de
módulo
é dado por:
Definição: Dado um
número
em
.
Dizemos que
é o inverso multiplicativo de
módulo
se a
.
Podemos mostrar que se
e
não têm fatores primos comuns, então
tem um único inverso multiplicativo módulo
.
E se
e
têm fatores primos comuns, então
não possui inverso multiplicativo módulo
.
Além disso, se
for primo, então todo
tem único inverso multiplicativo em
.
Com estas definições e resultados,
podemos operar com os elementos de
,
no que denominamos aritmética modular, que
utilizaremos mais adiante para estudar a codificação e
decodificação das cifras de Hill.
Exemplo 1: ,
pois
é um múltiplo inteiro de .
Exemplo 2: ,
pois
é um múltiplo inteiro de .
Exemplo 3: O resíduo
módulo
de
é .
Dividindo
por
,
obtemos um resto R = 25, ou seja,
.
Assim,
.
Exemplo 4: O resíduo
módulo
de
é .
Dividindo
por
,
obtemos um resto R = 12. Como
,
temos,
.
Assim,
.
Exemplo 5: .
Na aritmética comum, temos
.
Mas dividindo
por
,
obtemos resto
,
ou seja,
.
Assim, na aritmética módulo
,
temos
.
Exemplo 6:
é inverso multiplicativo de
módulo ,
pois .
Voltar ao
Topo.
Cifras de Hill
Uma maneira de tornar o código
mais difícil de ser quebrado é dividir o texto em grupos
e criptografar o texto comum por grupos. Um sistema
poligráfico é um sistema de criptografia no qual o
texto é separado em conjuntos de
letras, cada qual é substituído por um conjunto de
letras cifradas. As cifras de Hill são uma
classe de sistemas poligráficos, baseados em
transformações matriciais.
Vamos numerar cada letra do alfabeto
de a
,
e ao Z daremos o valor
.
Cada letra estará bem determinada por seu número
correspondente.
No caso mais simples da cifra de
Hill, vamos dividir o texto comum em pares de letras e
codificá-lo através do seguinte procedimento:
)
Escolhemos uma matriz
com entradas inteiras:
é
denominada matriz codificadora.
)
Dividimos o texto que queremos codificar em pares de
letras. Caso o texto tenha um número ímpar de letras,
adicionamos no final uma letra fictícia.
)
Substituímos cada letra por seu número correspondente.
Escrevemos cada par de números
e
como um vetor coluna:
Obtemos então os vetores
cifrados.
)
Por fim, substituímos cada número dos vetores cifrados
,
por suas letras equivalentes. Caso algum número do
vetor
não pertença ao conjunto
,
ou seja, não esteja entre e
,
obtemos o seu equivalente módulo
,
que esteja em
,
para podermos substituí-los por suas letras
correspondentes. Assim, juntando as letras de cada par
cifrado, teremos o texto codificado.
Nesse caso mais simples, no qual
separamos o texto comum em pares de letras, teremos uma
-cifra
de Hill. Em casos mais gerais de uma
-cifra
de Hill, basta separarmos o texto em grupos de
letras e escolher no
passo uma matriz codificadora
.
Exemplo: Vamos codificar
o seguinte texto: ALGEBRA LINEAR, utilizando uma -cifra
de Hill, com a seguinte matriz codificadora:
Primeiramente separamos o texto em
pares de letras, da forma:
Como temos um número ímpar de letras,
completamos o último par com uma letra fictícia
qualquer:
Substituímos então cada letra por seu
correspondente numérico:
Escrevemos cada par de números como
um vetor coluna e
obtemos os vetores cifrados
,
da forma:
.
Para o par AL, teremos:
Neste caso, o número
não está entre
e
e não podemos substituí-lo por sua letra correspondente.
Assim, obtemos o seu equivalente módulo
,
que esteja em
.
Dividindo
por
,
obtemos um resto R = 11, assim,
.
Dessa forma, obtemos o vetor cifrado do par de letras
AL:
Substituindo pelas letras
correspondentes, obtemos o par cifrado: YK. Fazendo o
mesmo para os demais pares de letras, teremos:
Portanto, obtemos os respectivos
pares de letras cifrados:
.
Assim, juntando todos os pares de texto codificados,
teremos a mensagem codificada:
Voltar ao Topo.
Inversa de uma matriz módulo m
Para conseguir
decodificar uma cifra de Hill, iremos usar a inversa
módulo
da matriz
codificadora. Usamos o número
pois estamos trabalhando apenas com as
letras do alfabeto, caso se queira utilizar acentuações
e pontuação, por exemplo, seria necessário trabalhar com
outro módulo e seguir os mesmos passos.
Definição: Seja
um inteiro positivo. Dizemos que uma matriz
,
com entradas em
,
é invertível se existir uma matriz
,
com entradas em
,
tal que:
é
a matriz inversa de
módulo
,
que denotamos por
.
Dizer que uma matriz está em módulo
significa que cada uma das suas entradas está em módulo
.
Teorema: Uma matriz quadrada
com entradas em
possui inversa módulo ,
se e somente se,
possui inverso multiplicativo módulo .
Com isso, podemos determinar quais as
matrizes quadradas que são invertíveis em
,
para qualquer
.
Isso nos ajuda pois ao codificar algum texto é preciso
que a pessoa que receba a mensagem seja capaz de
decifrá-la, caso contrário o texto ficaria para sempre
codificado e não transmitiria nenhuma informação. Para
podermos decifrar o código, no primeiro passo da
codificação precisamos escolher uma matriz
que seja invertível.
Teorema: Seja
uma
matriz
com entradas em ,
invertível módulo ,
isto é,
possui inverso multiplicativo módulo .
Então a inversa de
módulo
é:
Onde
é o inverso multiplicativo módulo
do determinante de
.
Esse teorema nos dá um meio para
calcular a inversa módulo
de uma matriz
,
que para os propósitos desta aplicação é suficiente. O
cálculo de inversas de matrizes de ordem maior
envolveria outros cálculos e definições, que não faremos
aqui.
Exemplo: Calcule a
inversa módulo
da matriz:
Temos que
.
O determinante de
módulo
,
portanto, possui inverso multiplicativo módulo
.
Temos:
.
Logo,
é o inverso multiplicativo de
módulo
.
Assim, a inversa de A módulo 26 é dada por:
Voltar ao Topo.
Decodificação de uma Cifra de Hill
Suponha que recebemos um texto
cifrado e conhecemos a matriz codificadora de uma
-cifra
de Hill:
que deve ser invertível módulo
.
Se é
um vetor com os correspondentes numéricos de um par de
letras de texto comum, sabemos pela regra de codificação
que os vetores
,
de correspondentes numéricos dos pares de letras
cifradas, são obtidos da forma:
Assim, podemos dividir o texto
cifrado que conhecemos em pares de letras, substituí-los
por seus correspondentes numéricos, escrever cada vetor
coluna e
por fim obter os correspondentes vetores
da forma:
Onde, nesse caso,
é a inversa módulo
de
.
Substituindo cada número dos vetores
por suas letras correspondentes, conseguimos decifrar
qual é a mensagem.
Exemplo: Suponha que
recebemos a mensagem: LQPQEECWBY, que foi
criptografada por uma -cifra
de Hill, com a seguinte matriz codificadora:
Vamos obter a mensagem decodificada.
Para isso, vamos obter a matriz
inversa módulo
da matriz
.
Efetuando os cálculos, temos:
Separamos o texto cifrado em pares de
letras, da forma:
E substituindo cada letra por seu
correspondente numérico, teremos:
Escrevemos cada par de números como
um vetor e
obtemos os correspondentes vetores de texto comum
em módulo
,
da forma:
.
Teremos:
Assim, substituindo cada número, dos
pares de vetores
obtidos, por suas letras correspondentes, obtemos os
pares de letras de texto comum:
Juntando os pares de letras,
descobrimos que a palavra codificada era: DINOSSAURO.
Suponha agora,
que recebemos um texto cifrado e sabemos uma parte do
texto decodificado. Vamos utilizar conceitos da Álgebra
Linear e eliminação Gaussiana para obter a matriz
decodificadora
.
Da Álgebra Linear, sabemos que uma transformação fica
bem determinada por seu efeito nos elementos de uma
base. Com esse princípio, teremos o seguinte teorema:
Teorema: Sejam
vetores de texto comum, linearmente independentes,
e
os correspondentes vetores cifrados de uma
-cifra
de Hill. Seja:
a matriz
de vetores linha
transpostos. E seja:
a matriz
de vetores linha
transpostos. Então, as operações elementares de linha
que reduzem
a matriz identidade ,
transforma
na matriz ,
sendo
a matriz decodificadora.
Assim, para encontrar a transposta da
matriz decodificadora
,
basta sabermos uma sequência de operações elementares de
linha que reduzem
a
e aplicarmos essas operações na matriz
.
Exemplo 1: Suponha que
recebemos a mensagem criptografada BEWIXSMFNC e
sabemos apenas que o texto original começa com a
palavra MOVA. Vamos obter a mensagem decodificada.
Separamos o texto comum conhecido em
pares de letras e substituímos por seu equivalente
numérico:
Fazemos o mesmo com o correspondente
texto cifrado:
De modo que os vetores p de texto
comum e seus correspondentes vetores cifrados
são:
Queremos reduzir a matriz
a matriz identidade de ordem
,
aplicando operações elementares de linhas, e
simultaneamente, aplicar essas mesmas operações na
matriz
obtendo
assim a matriz
.
Isso pode ser feito juntando à
direita de e
aplicando as operações elementares de linhas na matriz
resultante
até que o lado esquerdo seja reduzido a matriz
.
A matriz no lado direito será a que queremos.
Assim, do lado direito, obtemos a
matriz transposta da matriz decodificadora, logo, temos:
Agora, para decifrar a mensagem,
separamos o texto criptografado em pares de letras e
substituímos cada letra por seu número correspondente:
Escrevemos cada par de números como
um vetor e
obtemos os correspondentes vetores de texto comum
em módulo
.
Precisamos fazer isso apenas para a parte do texto que
ainda não conhecemos:
Assim, substituindo os pares de
números pelas letras correspondentes, obtemos o restante
do texto:
.
Logo, conseguimos decifrar a mensagem:
.
Exemplo 2: Suponha que
recebemos um texto que foi criptografado com uma -cifra
de Hill e sabemos que a palavra criptografada
FIKYRVMWG, corresponde a palavra de texto comum
UNICORNIO. Vamos obter a matriz inversa
da matriz codificadora A, módulo ,
com a qual podemos decifrar o restante do texto.
Como o texto foi criptografado por
uma
-cifra
de Hill, vamos separar o texto comum conhecido em grupos
de
letras e substituí-las por seus equivalentes numéricos:
Fazemos o mesmo com o correspondente
texto cifrado:
De modo que, os vetores
de texto comum e seus correspondentes vetores
cifrados
são:
Queremos reduzir a matriz
a matriz identidade de ordem
,
aplicando operações elementares de linhas, e
simultaneamente, aplicar as mesmas operações na matriz
obtendo
a matriz
.
Para isso, fazemos do mesmo modo que no exemplo anterior
e obtemos:
Assim, a matriz inversa da matriz
codificadora
,
módulo
é:
Com esta matriz, podemos decifrar o
restante do texto. Observe que quando utilizamos uma
-cifra
de Hill para a codificação, precisamos conhecer pelo
menos
letras de uma palavra de texto comum para conseguirmos
decodificá-lo. Quanto maior a dimensão da matriz
codificadora
,
mais difícil se tornam os cálculos e mais segura se
torna a mensagem codificada.
Voltar ao Topo.
|