Criptografia Classica e Moderna
April 27, 2017 | Author: André Rodrigues | Category: N/A
Short Description
Download Criptografia Classica e Moderna...
Description
LUIZ GONZAGA DE ALVARENGA
2ª. Edição
2011
Título da obra: Criptografia Clássica e Moderna 2ª. Edição, revisada e aumentada. Copyright © 2010/2011 Luiz Gonzaga de Alvarenga. Todos os direitos reservados. Proibida a reprodução sob qualquer forma. A reprodução e/ou uso comercial não-autorizado desta obra, no todo ou em parte, constituem infração da lei de direitos autorais. (Lei 9610/98) Capa e lay-out: do autor
PLANO DA OBRA PARTE I CAPÍTULO I CAPÍTULO II CAPÍTULO III CAPÍTULO IV
– – – –
CRIPTOGRAFIA CLÁSSICA, 7 HISTÓRIA CONCISA DA CRIPTOLOGIA, 47 FUNDAMENTOS DA CRIPTOANÁLISE CLÁSSICA, 65 CRIPTOANÁLISES CLÁSSICAS, 87
PARTE II CAPÍTULO V CAPÍTULO VI CAPÍTULO VII CAPÍTULO VIII CAPÍTULO IX CAPÍTULO X CAPÍTULO XI CAPÍTULO XII CAPÍTULO XIII
– – – – – – – – –
CRIPTOGRAFIA COMPUTACIONAL, 101 SISTEMAS DE CRIPTOGRAFIA, 115 CRIPTOGRAFIA E SEGURANÇA – I, 181 CRIPTOGRAFIA E SEGURANÇA – II, 195 CRIPTOGRAFIA E SEGURANÇA – III, 205 CRIPTOGRAFIA MATEMÁTICA, 213 FUNDAMENTOS DA CRIPTOANÁLISE MODERNA, 231 SEGURANÇA EM REDES DE DADOS, 277 CRIPTOGRAFIA QUÂNTICA, 299
ANEXOS, 305 FUNÇÕES RANDOM E RANDOMIZE, 307 ALGORITMOS E SISTEMAS CRIPTOGRÁFICOS, 309 TABELA DE CÓDIGOS ASCII, 313
APÊNDICES, 319 GRADES DE TRANSPOSIÇÃO REGULARES E IRREGULARES, 321 GERADOR DE NÚMEROS PSEUDO-RANDÔMICOS, 327 CODIFICAÇÃO POR TRANSFORMAÇÃO EM CAMADAS – MCTC, 331 FATORAÇÃO USANDO A FUNÇÃO QUADRÁTICA, 341
REFERÊNCIAS BIBLIOGRÁFICAS, 345 LIVROS IMPRESSOS, 345 LISTA CONCISA DE TEXTOS EM FORMATO PDF, 347 SITES DE INTERESSE, 347
PA R TE I
CAPÍTULO I CRIPTOGRAFIA CLÁSSICA 1.0 – Mensagem Oculta ou Mensagem Secreta? Desde a antiguidade que se procura um meio seguro e eficaz de enviar ou receber mensagens secretas, de modo que o seu conteúdo não possa ser conhecido por estranhos, caso a mensagem seja descoberta e/ou interceptada. Uma forma de fazer isso era simplesmente ocultando a mensagem, disfarçando de algum modo o seu portador/recipiente. Por exemplo, o historiador Heródoto narra um incidente de ocultação no qual a mensagem foi escrita no couro cabeludo de um escravo, cujos cabelos tinham sido previamente raspados. Quando os cabelos voltaram a crescer, o escravo foi enviado a outra cidade, passando despercebido pelos guardas, que nada encontraram em suas vestes que o incriminassem. Chegando ao seu destino, bastou raspar novamente os cabelos e exibir a mensagem. Neste caso, em que uma mensagem não codificada é escondida, diz-se que a comunicação secreta se dá por steganografia.1 Se a mensagem não é oculta, mas simplesmente disfarçada, o processo é denominado encriptação da mensagem. Como a mensagem normalmente é uma mensagem escrita, a arte de ocultar ou disfarçar uma mensagem é também chamado de escrita secreta. Se a mensagem não era ocultada, mas simplesmente disfarçada, este disfarce costumava ser realizado de duas maneiras diferentes: pela substituição das letras por outras, do mesmo alfabeto, ou pela sua transposição (deslocamento de posição). 1.1 – Cifras, Códigos, Encriptação, Codificação A cifra é um (ou mais de um) algoritmo que cifra e/ou decifra um texto. A operação do algoritmo costuma ter como parâmetro uma chave criptográfica. Tal parâmetro costuma ser secreto (conhecido somente pelos comunicantes). A cifra pode ser conhecida, mas não a chave; assim como se entende o mecanismo de uma fechadura comum, mas não se pode abrir a porta sem uma chave real. De um modo geral, um código é o mesmo que uma cifra. Especificamente, no jargão da criptografia, os dois conceitos são distintos. Um código funciona manipulando o significado, normalmente pela substituição simples de palavras ou frases. Uma cifra, ao contrário, trabalha na representação da mensagem (letras, grupos de letras ou, atualmente, bits). Por exemplo, um código seria substituir a frase atacar a cidade por Salão de Festas. Uma cifra seria substituir essa frase por jdiefjkfuewlrfszmdke. Os códigos não envolvem chave criptográfica, somente tabelas de substituição ou mecanismos semelhantes. Os códigos podem ser, então, encarados como cifras cuja a chave é o próprio conhecimento do mecanismo de funcionamento da cifra. O termo encriptação evita as ambigüidades que possam surgir do uso das palavras codificação (encriptação por código) e cifragem ou ciframento (encriptação por 1
Palavra originada das palavras gregas steganos, que significa “coberto”, e graphein, que significa “escrever”. Os processos de ocultar uma mensagem (a esteganografia) ou de disfarçá-la criaram a arte da escrita secreta (a escrita secreta é também conhecida como cifrário ou código secreto).
cifras).2 O texto não codificado é chamado de texto original, texto corrido ou texto claro (plaintext, em inglês). O texto codificado é chamado de texto cifrado, mensagem cifrada ou criptograma. O processo de converter o texto original em texto cifrado é chamado composição de cifra, e o inverso, como já dito, é chamado de decifração. Atualmente, o processo de ocultar ou disfarçar uma mensagem é conhecido como criptografia. A arte do deciframento é chamada criptoanálise (ou criptanálise),3 e o conjunto criptografia/criptoanálise é chamado Criptologia. 1.2 – Encriptação por Sustituição de Letras 1.2.1 – Encriptação Monoalfabética Este sistema de encriptação é também chamado de Ciframento. Nele é usado apenas um alfabeto, e nele, as mesmas letras claras serão substituídas pelas mesmas letras cifradas, no sistema por substituição de letras. 1.2.2 – A Cifra de César Várias formas de comunicação secreta foram extensamente usadas, como, por exemplo, a utilizada pelo imperador romano Júlio César4 para se comunicar com os seus generais. César usava um sistema simples de substituição de letras, em que cada letra do alfabeto (que podia ser usado tanto o alfabeto romano quanto o grego) era trocada por uma outra letra do mesmo alfabeto, deslocada. O exemplo a seguir ilustra sua utilização, usando o alfabeto português. ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC Neste exemplo, cada letra da mensagem original é trocada pela letra deslocada de três posições para a direita. Outros deslocamentos também podem ser usados. O Cifrário de César é extremamente vulnerável, porque basta fazer 25 deslocamentos para se encontrar a chave. O método de encriptação por cifras (vide nota 2) possui um algoritmo e uma chave. O algoritmo é o processo de codificação por substituição, e a chave define o alfabeto a ser utilizado tanto na encriptação quanto na desencriptação. 1.2.3 – O Atbash Entre os hebreus, costumava-se usar o processo chamado atbash. Neste caso, as 22 letras do alfabeto eram escritas onze a onze, e cada letra seria substituída pela correspondente superior ou inferior.5 2
Doravante, serão utilizadas, indistintamente, as expressões encriptação, codificação ou ciframento, para indicar o processo de encriptação, e desencriptação, decodificação, decifração ou deciframento, para indicar o processo de desencriptação (geralmente chama-se ciframento à substituição por letras, e codificação, à substituição por símbolos). 3 Análise do texto codificado em busca de padrões que identifiquem mensagens camufladas por códigos, e permita realizar o processo de sua decifração. 4 E por isso conhecida como Cifra de César. Este sistema, que utiliza a substituição simples de letras, é também conhecido como sistema por deslocamento de letras. 5 A escrita hebraica é realizada da direita para a esquerda.
O processo de cifragem/decifragem ficava mais fácil, se o alfabeto fosse colocado por extenso:
A cifragem se faz de cima para baixo, e a decifragem, de baixo para cima. Mas a atbash é extremamente vulnerável, devido à propriedade de simetria que apresenta:
O conjunto de livros judeus conhecido como Torah (Pentateuco; Gênesis; Êxodo; Levítico; Números), escritos em hebraico, é o cerne de um misterioso código descoberto no século XVIII pelo Rabino Elijah Solomon. É atribuída a ele a seguinte afirmação: “Tudo o que existiu, existe e existirá até o fim dos tempos está incluído na Torah, os cinco primeiros Livros da Bíblia”. Esta fantástica afirmação, entretanto, já tinha sido enunciada por outros notáveis Rabinos do passado, tais como Moisés ben Maimon, Moisés ben Nachman e Rabenu Bachya (circa séc. XII-XIII). No século XX, o Rabino Michael Ber Weissmandl fez uma pesquisa em busca de supostos códigos contidos na Torah. Mas foi preciso que surgissem os computadores, e uma nova geração de pesquisadores (entre os mais conhecidos, Doron Witztum e Eliyahu Rips, especialistas em matemática estatística) para que se tornasse possível uma pesquisa em profundidade da Torah. O resultado estarreceu os pesquisadores. Através de uma pesquisa do texto6 em que se buscavam palavras formadas por letras eqüidistantes (p. ex., formar palavras com cada 50ª. letra do texto – mas qualquer outro intervalo pode ser utilizado), encontravam-se referências a personagens e lugares históricos do passado, mas igualmente, do presente. Havia, inequivocamente, um código oculto no texto da Torah!7 1.2.4 – O Código Maçônico O Cifrário maçônico, ou escrita maçônica8: é um tipo de escrita oculta antigamente usada para comunicação entre maçons. Usa o sistema de susbstituição de cifras, em que cada letra é substituída por outra.
6
Denominada SAE – Seqüências alfabéticas eqüidistantes, ou codificação por salto de letras. Ver: SATINOVER, 1998. 8 É pejorativamente conhecida como “escrita do chiqueiro”. 7
A escrita é bem simples: basta substituir cada letra do texto claro pela porção da grade que lhe corresponde. Por exemplo: A H
= =
T W
= =
etc. A palavra maçom fica assim, após ser cifrada conforme o código:
A rigor, a cifra maçônica não é uma codificação, mesmo porque ela é extremamente fácil de ser decifrada. 1.2.5 – Encriptação por Substituição de Símbolos Neste processo, ao invés de se substituir as letras por outra letras, a substituição é feita utilizando símbolos. Este sistema é chamado de Codificação. Seja, por exemplo, usando a tabela de códigos, enviar a seguinte mensagem: Príncipe viaja para o castelo esta noite. Deve ser assassinado. Tabela (parcial) de Códigos: 09 04 01 02 12
Viajar Castelo Príncipe Assassinato Esta noite
A mensagem secreta codificada é: 01 09 04 12 02 A fraqueza deste código está no fato de que cifras iguais indicam conteúdo idêntico (por exemplo, castelo é sempre indicado pelo número 04).
1.2.5.1 – Nomencladores Se o processo de codificação envolvesse letras e símbolos, ou apenas símbolos, era chamado de nomenclador.9 Neste, os símbolos substituiriam não apenas letras, mas também nomes de figuras importantes, cuja identidade não poderia ser conhecida. A figura mostrada a seguir ilustra o nomenclador utilizado pelo embaixador da Rainha Elisabeth I da Inglaterra na França, Sir Francis Walsingham.
Nomenclador de Walsingham 1.2.6 – O Cifrário por Rotação Nos códigos mais antigos, a codificação por substituição era feita usando um único alfabeto. Por esta razão, era denominada codificação monoalfabética.10 Durante séculos, a encriptação monoalfabética foi considerada segura, nos dois processos, transposição e substituição. Para dar maior segurança, muitas vezes os dois processos eram utilizados conjuntamente.11 Além disso, podiam ser usados dois ou mais processos sucessivos de encriptação.12 O processo utilizado por Júlio César foi aperfeiçoado no século XV pelo arquiteto italiano Leon Alberti. Ele inventou o Cifrário por Rotação, o qual utiliza um Disco de Cifras, que chegou mesmo a ser usado na Guerra Civil Americana.13
9
A decifração do nomenclador utilizado nas comunicações secretas da rainha Maria, da Escócia, envolvida em um complô contra a rainha Elisabeth I, da Inglaterra, levou a que a primeira fosse levada ao cadafalso e sofresse a morte por decapitação. 10 Neste caso, o alfabeto permanece fixo durante toda a cifragem. Ou seja, a substituição de cada letra não muda; cada letra será sempre substituída pela mesma letra cifrada. 11 Às vezes eram combinados processos de transposição-substituição-transposição. 12 Este processo é chamado superciframento, ou supercifragem. 13 Leon Battista Alberti (1402-1472), escreveu o tratado Modus Scribendi in Ziferas. Atribui-se a Alberti a invenção do cifrário polialfabético.
Disco de Cifras Este consiste de dois discos com diâmetros diferentes, montados concentricamente e em que estão gravados os alfabetos, de forma que ao movê-los em torno do eixo comum, os mesmas se relacionam entre si. Deste modo, o disco de cifras permite de uma forma prática e fácil mudar as cifras. Cada letra pode ser representada de 26 maneiras diferentes, dependendo da sua posição em relação ao alfabeto central. Para usa-lo, é necessário primeiro que a chave ou cifra seja designada. Por exemplo, a letra A no alfabeto convencional pode ser relacionada como L no alfabeto codificado. Por exemplo, a codificação abaixo é feita “rotando” cinco caracteres para a frente:14 A BCDEFGH I JK LMNOPQ RS TUVWXY Z WXYZABCDEFG HI J KLMNOPQ RS T UV O Cifrário por Rotação, monoalfabético, introduziu uma dificuldade a mais pelo fato de que agora podiam ser realizadas 25 (26-1) trocas (ou permutações) circulares para cada letra. O Disco de Cifras não era invulnerável, apesar da quantidade imensa de chaves possíveis (na realidade, muitas das permutações podiam ser descartadas, por inúteis).15 1.2.7 – Encriptação por Sustituição Polialfabética de Letras O sistema monoalfabético serviu por séculos para codificar com segurança as mensagens que possuíam valor estratégico ou militar de qualquer tipo, e que não podiam se tornar conhecidas. Aos poucos, entretanto, novas técnicas de deciframento16 foram sendo inventadas, e o sistema monoalfabético foi ficando cada vez mais vulnerável. Um dos aperfeiçoamentos foi o uso da encriptação polialfabética (este processo é também chamado Ciframento) em que vários alfabetos embaralhados são utilizados, para dificultar o deciframento da mensagem pela análise de frequência de letras.17
14
Como cada letra do alfabeto de cima pode ser combinada com 26 letras do alfabeto inferior, isto sugere a possibilidade de se poderem criar 25! (15511210043330985984000000) combinações diferentes. 15 Muitas delas, se utilizadas, irão deixar várias letras iguais. 16 Uma das técnicas mais sofisticadas foi descoberta pelos árabes abássidas, e consistia em analisar estatisticamente a frequência com que as letras apareciam em um texto cifrado, comparando-as com as letras mais comuns do alfabeto utilizado (ver Capítulo II). Atualmente, esta técnica é conhecida pelo nome de Princípio de Máxima Verossimilhança.
No exemplo abaixo é usado a convenção atualmente aceita: alfabeto original em minúsculas; alfabeto cifrado em maiúsculas. Alfabeto original: Alfabeto cifrado 1: Alfabeto cifrado 2:
a b c d e f g h i j k l mn o p q r s t u v wx y z SY KJMF P ZR BQUE I CVT XOWLDAHGN DCNEUGY JM KOQFVP S R I T LWZXHBA
Na encriptação ou codificação, usa-se alternadamente um ou outro alfabeto cifrado, de modo a dificultar o deciframento. 1.2.7.1 – A Cifra de Substituição Homofônica Um processo que foi desenvolvido, chamado Cifra de Substituição Homofônica, usa um sistema mais simples de substituição polialfabética. Nele, são introduzidos símbolos diferentes para as letras mais frequentes. Por exemplo: AABCDEEFG H I I J KL MNOOPQRST UVWXYZ VG♦XC ♠PFWAKBNE♣ ML S ZTQ♥I DY O J UHR Para cifrar, usa-se, na primeira ocorrência da letra A, ela é substituída pela letra V; na segunda ocorrência, pela letra G, e alternando. Em outra variante usam-se números com dois algarismos para substituir as letras mais freqüentes de todo o alfabeto, ao invés de restringir-se às vogais. As letras menos freqüentes devem ser substituídas por apenas um número. 1.2.7.2 – Cifrário Homofônico de Crema Este cifrário foi criado por Simeone de Crema em 1401. Nele, utilizava-se uma substituição múltipla das vogais do texto original (a cada vez, a vogal era substituída por símbolos diferentes entre si).
Cifrário de Simeone de Crema 1.2.7.3 – Cifrário Homofônico de Michele Steno Michele Steno foi Doge de Veneza de 1400 a 1413. Ele usava uma cifra homofônica na qual havia muitos símbolos que podiam ser escolhidos para cada caracter. A cifra usava também nulas18 e caracteres especiais para certas palavras de uso frequente.
17
Outro processo usa letras aleatórias chamadas nulas, que não fazem parte da mensagem, para dificultar a análise de freqüência. 18 Nula ou cifra nula é uma forma de cifragem em que o texto claro é misturado com uma quantidade de letras sem significado. Atualmente, é considerada uma forma simples de esteganografia.
Cifrário de Michele Steno
1.2.7.4 – Cifrário Homofônico do Duque de Montmorency Em 1552 o Duque de Montmorency usava um cifrário homofônico em sua correspondência com a Inglaterra. Nele, caracteres especiais substituíam nomes ou cargos de pessoas. Para aumentar a segurança da cifra, Montmorency também fazia uso de nulas.
Cifrário do Duque de Montmorency 1.2.7.5 – Cifrário Homofônico de Philibert Babou Em 1558, Philibert Babou, criptoanalista oficial do rei François I da França, utilizava um cifrário homofônico no qual as letras, ou conjuntos de duas letras (dígrafos), de três letras (trígrafos) e quatro letras (quadrígrafos) mais comuns do idioma francês eram substituídos por símbolos.
A cifra homofônica de Babou 1.2.7.6 – Cifrário Homofônico do Rei Henrique IV Em 1595, Henrique IV, rei da Inglaterra, utilizava uma cifra homofônica para tratar de assuntos sigilosos. Além das vogais, as consoantes tinham mais de um caracter para substituí-los.
A cifra de Henrique IV 1.2.7.7 – Cifrário Homofônico do Rei Luis XIII Em 1628, o rei Luis XIII da França usava uma cifra homofônica para tratar da correspondência diplomática entre a França e Constantinopla. Para assuntos particulares, ele utilizava uma outra cifra homofônica.
Cifra particular do Rei Luis XIII
Cifra para a correspondência Paris-Constantinopla O sistema homofônico, apesar de constituir um progresso na cifragem, não é um sistema indecifrável.
1.2.7.8 – O Cifrário de Trithemius O abade beneditino Johannes Trithemius19 (1462-1516) propôs que o alfabeto simples de César fosse ampliado em uma matriz com 26 linhas, com um deslocamento por linha (a matriz proposta por ele normalmente é atribuída ao francês Blaise de Vigenère, cuja cifra será vista em seguida).
Quadro de Trithemius Neste sistema, a codificação de cada letra é realizada usando fileiras escolhidas do alfabeto deslocado, descendo ao longo do Quadro. Ao chegar à letra Z, o processo é reiniciado. Para codificar uma letra, escolhe-se uma linha e usa-se a primeira linha como guia. Para codificar um texto claro qualquer, a codificação teria início buscando a primeira letra do texto claro na primeira linha, e descendo até encontrar a linha escolhida e a a letra codificada, e assim sucessivamente. Por exemplo, usando a 10ª linha, a letra de texto claro “A” seria codificada como "J". O quadro de Trithemius é um bom exemplo de cifra polialfabética. 1.2.7.9 – A Cifra de Vigenère Em 1562 o francês Blaise de Vigenère aperfeiçoou o sistema polialfabético de Trithemius. Seu sistema é chamado Cifra de Vigenère.20 Nele, a codificação é feita usando-se uma chave constituída por uma palavra ou frase de fácil memorização.21 Quando o texto original é maior que a chave, esta é repetida tantas vezes quantas forem necessárias. O exemplo a seguir mostra a codificação de um texto (assaltem o forte) realizada com a palavra-chave (SEGREDO), e usando o Quadro de Trithemius.
19
Ele escreveu o tratado Polygraphiae Libri Sex. Vigenère tornou-se famoso pela publicação de sua obra (1586), Traicté des Chiffres (Tratado das Cifras). 21 A chave pode ser: uma palavra (palavra-chave ou key-word); uma frase ou sentença (key-phrase). 20
Palavra-chave: Texto original: Texto cifrado:
SE GRED OSEGRED O a s s a l t emo f o r t e SWYRPWSE SLFVW S
Este é um exemplo de substituição polialfabética periódica. No caso da substituição polialfabética aperiódica, a chave não se repete regularmente. Pode-se, por exemplo, eliminar as duas últimas letras da palavra-chave, palavra sim palavra não: Palavra-chave: Texto original: Texto cifrado:
SE GRE DOSEG RE S E a s s a l t em o f o r t e SWYRP L I S F J RF LW
Pode-se também usar uma sentença qualquer de um texto (escolhida previamente de comum acordo) para servir de chave (por exemplo, a montanha tem mi(l metros)): Chave: Texto original: Texto cifrado:
AMON TA NH ATEMM I a s s a l t e m o f o r t e AE GN E T RT OYSD F M
Pode-se também fazer recomeçar a chave, assim que uma letra do texto claro é encontrada. Esta técnica, conhecida como Sistema Interruptor do Texto Corrido, é mostrada a seguir (no exemplo, a chave – montanha - recomeça quando encontra a letra A). O texto original é: destruir canhão. Chave: Texto original: Texto cifrado:
MONTA N HAMMO NMO d e s t r u i r c a n h a o P SF MR I P R OMB UA C
1.2.7.10 – O Cifrário Gronsfeld Uma variante mais fraca do que o Cifrário de Vigenère, mas mais forte do que o de Trithemius, é o chamado Cifrário de Gronsfeld.
Cifrário de Gronsfeld Neste cifrário, as palavras-chaves devem usar apenas as dez primeiras letras do alfabeto. Entretanto, ele é baseado em um número-chave, e não em uma palavra-chave. Por exemplo, seja cifrar a mensagem parcial:
Pois do céu é revelada a ira de Deus contra toda impiedade22, ou seja: A ira de Deus O número-chave é 1027 (que, coincidentemente, significa BACH). A B
i ra de ACH BA
Deus CH BA
B
ITH
FL VS
EE
(BITHEEFLVS)
Além do número reduzido de chaves que proporciona, este cifrário ainda impede que certas letras sejam originadas de outras: por exemplo, o S não pode surgir das letras de A até I, ou das letras T até Z.23 Todas estas características tornam extremamente fraco este cifrário.24 1.2.7.11 – Os Cifrários de Beaufort O Cifrário de Vigenère pode ser usado de duas maneiras, com duas regras de codificação/decodificação. Em uma, a letra da mensagem encontra a letra da chave abaixo, e a letra codificada é encontrada na primeira coluna à esquerda. Pela outra regra, corre-se para baixo a partir da letra da chave (na primeira linha) até encontrar a letra da mensagem, e a letra codificada é encontrada na primeira coluna à esquerda. Estas características são exploradas nos chamados Cifrários de Beaufort.25 Por exemplo (cf. SGARRO), a mensagem This is the same old stuff, codificada pela palavra-chave WIND. T HI S WIND
I S WI
THE NDW
SAME I NDW
OLD S TUF F I ND WINDW
DBFL XZVP
OQ MK
UWS GEI
QNRS KNJ I
UCA E PTYR GYA WLHCJ
Na tabela de Vigenère mostrada a seguir, está indicada a primeira codificação (que leva à letra D – pela primeira regra – e à letra X – pela segunda regra).
22
A sentença completa é: “Pois do céu é revelada a ira de Deus contra toda a impiedade e injustiça dos homens que detêm a verdade em injustiça” (ou, em outra tradução: “A ira de Deus Se revela do céu contra toda impiedade e perversão dos homens que detém a verdade em injustiça.” (Romanos 1:18). 23 Olhando embaixo, a letra S somente surge após o intervalo A até I, visto em 0, em cima. Olhando as colunas de letras encimadas por T até Z, não surge nenhuma letra S nelas. 24 Este cifrário foi quebrado pelo criptoanalista francês Étienne Bazeries, que, incidentalmente, quebrou o nomenclador usado por Napoleão Bonaparte, entre outros. 25 O primeiro método é conhecido como Cifrário Verdadeiro de Beaufort (usa o sistema criptograma = chave – mensagem. O segundo método, conhecido como Cifrário Variante, ou The Same Old Stuff, usa o sistema criptograma = mensagem – chave). Este cifrário já tinha sido descrito por Giovanni Sestri em 1710.
1.2.7.12 – O Cifrário de Porta Outra variante do Cifrário de Vigenère é denominada Cifrário de Porta. Neste cifrário, cada metade se mantém fixa, enquanto que a outra metade é girada uma letra por vez.
Por exemplo, se a palavra-chave é vingança, e a mensagem é castelo, a primeira letra fica assim codificada: a primeira letra, C, é codificada inicialmente com a letra P; procurando o alfabeto com o cabeçalho P, a letra C é finalmente codificada com a letra V. Apesar de aparentemente complexo, este cifrário possui várias ciladas. Por exemplo, se a letra de chave é U ou V, a letra clara A é cifrada como Q, e a letra clara Q é cifrada como A. Outra característica desagradável deste cifrário é que várias palavras-
chave são intercambiáveis: CASA ou DATA, por exemplo (isto surge em razão dos cabeçalhos duplos). E assim como no Cifrário de Gronsfeld, várias linhas são perdidas (13 neste cifrário, contra 16 no anterior). Dessa maneira, ao invés de 26 substituições, são disponíveis apenas 13. 1.2.7.13 – A Cifragem por Substituição de Grupos de Letras Um dos próximos aperfeiçoamentos a serem feitos surgiu quando foram propostos códigos de substituição não de letras isoladas da mensagem clara, mas de grupos de letras. Este sistema, curiosamente, surgiu de um sistema de sinalização descrito pelo historiador grego Políbio, que viveu no século II a.C. O sistema era formado por um bloco quadrado de letras; sendo 26 o número de letras normal da maioria dos alfabetos, uma das letras deveria ser desprezada. Para os exemplos que serão descritos, será desprezada a letra Q, que costuma ser útil para os criptoanalistas, por não vir sozinha e ser sempre acompanhada da letra U. A letra Q pode ser substituída, sem problemas, pela letra K. Políbio descreveu o que foi chamado de Xadrez de Políbio, o qual é mostrado a seguir.
Deste modo, A é representada por “1 1”, B por “1 2”, até chegar a Z, que é representada por “5 5”. Uma mensagem seria então codificada por dois números. Por exemplo, a palavra Grécia: G R E C I A 224215132411 Na verdade, este sistema pretendia ser apenas um método de comunicação à distância, o que se fazia através do uso de tochas acesas. ______________________________________________________________________ Um método moderno de comunicação (pelo telégrafo) foi idealizado pelo inventor norte-americano, Samuel Morse. Para conseguir uma comunicação rápida, ele usou símbolos constituídos por traços e pontos para as letras. Ao visitar uma tipografia, Morse percebeu que os tipos (letras) que enchiam as caixas, e que eram usadas para compor um texto, eram tanto menos quanto menos fosse usada aquela letra. Ou seja, ele fez uma análise de freqüências intuitiva, para o idioma inglês. Desse modo, ele abreviou os símbolos correspondentes às letras mais usadas (a letra e, a mais usada, é formada
por um único ponto), deixando os símbolos mais complexos para as letras menos usadas.
______________________________________________________________________ 1.2.7.14 – A Cifra Playfair O Xadrez de Políbio serviu de base para criar algumas Cifras, tais como a Cifra Playfair e a Cifra Delastelle (que se verá adiante). Charles Wheatstone foi um cientista inglês conhecido por muitas invenções e por ter sido um dos pioneiros do telégrafo elétrico. Ele criou um tipo de codificação que se tornou popularmente conhecido como Código Playfair, o nome do seu vizinho, Lord Playfair, que não a inventou, mas a popularizou.26 A Cifra Playfair introduziu o processo de codificação por blocos. A cifragem (que usa uma palavra-chave) se dá substituindo cada par de letras no texto original por outro par de letras. O bloco de letras é um quadrado 5x5, com 25 letras do alfabeto (i e j são consideradas uma única letra). A palavra-chave, que pode ter qualquer tamanho (não pode ter letras repetidas) é escrita, e em seguida preenche-se o quadrado com o restante das letras não constantes da palavra-chave. Usando, por exemplo, a palavra-chave felizardo constrói-se o seguinte quadrado:27
26
Lyon Playfair, Barão de St. Andrews. A Cifra Playfair foi muito usada, inclusive durante a Primeira Guerra Mundial. 27 A palavra não deve ter caracteres repetidos, e o resto do alfabeto segue a seqüência, pulando as letras da palavra.
F A C N U
E R G P V
L D H Q W
I/J O K S X
Z B M T Y
A mensagem a ser cifrada é quebrada em pares de letras (dígrafos); duas letras iguais, juntas, devem ser intercaladas pela letra x. Uma letra final isolada é acrescida da letra x. Por exemplo, seja codificar o seguinte texto: Encontre-me na rua atrás da Assembléia Por quebra e por inserção, torna-se: en co nt re me na ru ax at ra sd ax as xs em bl ei ax A cifragem será feita assim:
• Se as letras estão dentro da mesma fileira, são substituídas pelas letras à direita de cada uma (ei torna-se LZ). • Se as letras estão dentro da mesma coluna, são substituídas pelas letras abaixo de cada uma (na torna-se UC). • Se uma das letras está no fim da fileira, é substituída pela letra no começo. • Se uma das letras está no fundo da coluna, é substituída pela letra do topo. • Letras em fileiras e colunas diferentes são substituídas pelas respectivas letras das interseções. en co nt re me na ru ax at ra sd ax as se mb le ia FP AK NP GR GZ UC AV UO NB DR QO UO NO PJ TM IL OF28 A Cifra Playfair também não se mostrou invencível. A análise de freqüência de letras simples, que permitia decifrar os códigos monoalfabéticos tinha sido aperfeiçoada; ao invés de buscar apenas letras simples, a análise passou a incluir a distribuição de dígrafos e trígrafos no idioma.29 Aliada à busca de outras peculiaridades do idioma, esta análise múltipla permitia encontrar a maioria dos segredos dos códigos. No caso da Cifra Playfair, bastava procurar os dígrafos mais comuns do idioma inglês: th, he, an, in, er, re, es.
28
Note-se que no caso do dígrafo NT, T (última letra) é substituída pela primeira (N), que por pertencer ao dígrafo e estar na mesma fileira, é substituida pela letra à direita (P). 29 Ou, como é também chamada, análise por freqüências duplas e triplas.
1.2.7.15 – A Cifra Delastelle Um contemporâneo de Playfair foi Felix-Marie Delastelle (1840-1902). Ele criou um cifrário em blocos 5x5, uma espécie de xadrez de 25 casas. Por exemplo, usando a chave ABAT-JOUR (cf. Sgarro): 1 2 3 4 5
1 A U F L V
2 B R G M W
3 T C H N X
4 J D I P Y
5 O E K S Z
O ciframento é feito em três etapas. Seja cifrar a mensagem: Atacar cidade.30 Na primeira, a a mensagem é cortada em blocos de cinco letras cada um; embaixo de cada letra, escreve-se o número da coluna e, mais abaixo, o número da linha indicativa da posição da letra no bloco 5x5. ATACA 1 31 3 1 1 11 2 1 RCIDA 2 344 1 2 232 1 DEXXX 4 5 33 3 2 2 33 3 Na segunda etapa, trancrevem-se as cifras horizontais duas a duas, sequencialmente: 13 13 11 11 21 23 44 12 23 21 45 33 32 23 23 Em seguida, recodificam-se as letras, seguindo a ordem numérica (em blocos de cinco letras): FFAAB GPUGB YHCGG Este é o criptograma final. O cifrário de Delastelle é conhecido como Cifrário Bifendido. Ele criou também o Cifrário Trifendido, formado em um cubo 3x3x3. Apesar de complexos, tais cifrários apresentam padrões detectáveis, os quais são utilizados pelos criptoanalistas para decifrá-los. 30
São inseridas nulas, para completar o bloco 5x5.
1.2.7.16 – Encriptação por Sistemas de Cifras O sistema de cifras, que é também um sistema por substituição, utiliza o mesmo método utilizado pelos antigos nomencladores. Ou seja, a substituição não é de letras, mas sim, de palavras. Neste sistema, o criptógrafo compila uma espécie de dicionário, o qual contém uma relação de palavras claras traduzidas em um tipo de código numérico em seqüência. Por este motivo, este sistema é conhecido pelo nome de Cifrário por Dicionário, ou Repertório, ou simplesmente Código. Um exemplo de palavras dicionarizadas neste cifrário são dadas a seguir: BOMBA BOMBARDEIO BONAPARTE ..... CANHÕES ..... CAVALARIA
21299 21300 21301 21305 21310
Quando a ordenação por palavras é alfabética e a numérica é seqüencial, diz-se que o código é por lista simples (como no exemplo dado). Este tipo de codificação, entretanto, é pouco seguro, exatamente pela seqüencialidade, que dá pistas preciosas para o criptoanalista. Por exemplo, se uma palavra é decodificada, a seguinte (em ordem alfabética quase que se torna evidente. Se a ordenação é feita alfabeticamente, mas a numeração não é seqüencial, diz que o código é por lista dupla. Utilizando o exemplo anterior, a lista poderia sair assim: BOMBA BOMBARDEIO BONAPARTE CANHÕES CAVALARIA
43501 71123 30301 81505 91314
Neste caso, uma segunda lista deve ser compilada, em ordem numérica acompanhada das palavras (desordenadas), para facilitar a decodificação. Além de ser uma codificação fraca, a codificação por sistema de cifras é muito incômoda, por exigir extensos dicionários de palavras. Freqüentemente, para aumentar a segurança, costumava-se realizar a sobrecifração ou supercifragem, em que o criptograma era cifrado uma segunda vez. Mesmo este expediente, no entanto, não dava completa segurança à mensagem cifrada.31
31
Um dos mais famosos casos de deciframento de mensagens deste tipo ocorreu em 1917, durante a Primeira Guerra Mundial. Um telegrama alemão expedido pelo Ministro do Exterior, Arthur Zimmermann, foi quebrado pela contra-espionagem inglesa, e seu conteúdo foi repassado para os EUA, o que determinou a entrada deste país na guerra.
1.3 – Encriptação por Transposição Além do método de codificação por substituição mono ou polialfabética, existe um outro método no qual faz-se simplesmente o deslocamento das letras, trocando-as de posição. É o chamado método de transposição. Nele, cada letra da mensagem original é tirada de sua ordem normal; ou seja, a mensagem é misturada, de forma a destruir as junções dígrafas e trígrafas que normalmente compõem as palavras. O ciframento por transposição cria o que se denomina anagrama. Na transposição, as letras não são substituídas, e sim permutadas entre si. Por exemplo, a mensagem atacar o quartel (atacaroquartel). Uma das transposições possíveis transforma assim a mensagem: RAQTORCEALUAAT 1.3.1 – A Cítala Espartana O processo de codificação por transposição torna-se mais invulnerável, à medida que mais letras do texto são utilizadas.32 No século V a.C., em Esparta, utilizava-se um instrumento para esta finalidade, a cítala ou citale.33 Era um cilindro ou bastão de madeira chanfrada, no qual era enrolada uma tira de couro ou pergaminho, ao longo da qual se escrevia a mensagem. Desenrolada a tira, a mensagem somente poderia se lida se fosse enrolada em outro bastão de mesmo diâmetro.
Cítala espartana 1.3.2 – Sistemas de Transposição Monofásicos O sistema chamado Monofásico é aquele que usa somente uma transposição. Os vários tipos de sistemas monofásicos serão vistos a seguir. 1.3.2.1 – Sistema de Código de Cancela Estes códigos foram usados durante a Guerra Civil norte-americana para codificar mensagens transportadas por mensageiros. São bastante simples de serem implementados, e possuem duas versões. 32 33
Entretanto, como se verá, ele pode sofrer ataques capazes de realizar o deciframento. Usado principalmente pelos governantes (éforos).
Na primeira versão, a metade do texto corrido é escrita em uma linha, e a outra metade, na linha debaixo. Seja por exemplo a mensagem cancelar o ataque. CANC E L AR OAT AQ U E O texto cifrado resulta da seleção das colunas da esquerda para a direita, e do registro do texto cifrado em grupos de cinco caracteres, como mostrado a seguir: COAAN ACAEQ LUAER Na segunda versão o texto claro é escrito em colunas da esquerda para a direita, como mostrado: CNEA OTQE ACLR AAU O texto é desenvolvido em seguida, pela seleção de duas filas e do registro dos caracteres em grupos de cinco: CNEAO TQEAC LRAAU Esta é uma forma bastante fraca de criptografia, e que, quando usada, deve ser complementada por outras técnicas de sobrecifração. 1.3.2.2 – Sistemas de Código de Roteiro Neste sistema, inscrevem-se os caracteres da mensagem em uma matriz, começando em um ponto inicial prefixado e seguindo um roteiro prescrito, a seguir gerando o texto cifrado através de outro roteiro prefixado. Seja, por exemplo, a mensagem o porto foi minado deve ser evitado. A mensagem é escrita em um bloco 6x5, como abaixo:34
Em seguida, as colunas são lidas de cinco em cinco caracteres, de cima para baixo, para formar o texto cifrado: OFAEI PODST OIOEA RMDRD TIEEO ONVVX Se fosse realizada uma codificação por transposição diagonal, resultaria: OFPAO OEDIR ISOMT TEDIO AREND EVOVX
34
Algumas vezes a matriz não é preenchida, como no exemplo. Neste caso, são inseridas nulas até completarem a matriz.
Ou, seguindo uma espiral no sentido horário, voltada para dentro e começando pela coluna seis, resultaria: ONVVX ODATI EAFOP ORTIE ERESD OIMDO A mensagem pode ser escrita de várias formas, em um bloco 6x5. A seguir, são mostradas duas versões possíveis de escrita (de cima para baixo, e em escrita bustofrédica, ou seja, em vai-vém). O P O R T O
F A O D I O M D I E N V
E S E R E V
I T A D O X
OPORTO NI MI OF ADODEV VE RES E I T ADOX Se a mensagem é mais longa do que o número de células da matriz, os caracteres restantes podem ser inscritos em matrizes adicionais, que contenham toda a mensagem. Assim como os métodos anteriores, este sistema é igualmente bastante fraco. 1.3.2.3 – Sistema de Coluna-Senha Este é um dos métodos de transposição mais utilizados. Neste método, a mensagem clara é inscrita em filas, em uma matriz na qual o número de colunas é determinado por uma palavra-chave. Veja-se o exemplo (chave numérica: 24631857).
O criptograma surge quando são selecionadas as colunas na ordem numérica determinada, em grupos de cinco letras. TASDO IDVRN EAPME IFORX OIVTO DEXXX35 1.3.3 – Sistemas de Transposição Polifásicos Estes são os sistemas de transposição nos quais se empregam múltiplas transposições.
35
A inserção de caracteres nulos, tanto na matriz quanto no criptograma. nem sempre aumenta a segurança do sistema, podendo até mesmo prejudicá-lo.
1.3.3.1 – Cifrários por Transposição de Colunas Neste cifrário, que usa grades NxN, é usada uma das possíveis permutações de de ordem 1 a N. Por exemplo, em um bloco 6x6, de ordem 123456 (em que cada algarismo indica a ordem da coluna), suponha-se que resulte uma permutação assim indicada: 326415.36 Inicialmente, a mensagem clara (exército em manobras atacar ao amanhecer) é escrita em um bloco 6x6: 1 e t n a a h
2 x o o t o e
3 e e b a a c
4 5 6 r c i mm a r a s c a r ma n e r x
Permutando as colunas, resulta: 3 e e b a a c
2 x o o t o e
6 i a s r n x
4 1 r e m t r n c a ma e h
5 c m a a a r
O criptograma resulta da leitura das colunas (de cima para baixo), na ordem permutada: EEBAACXOOTOEIASRNXRMRCMEETNAAHCMAAAR 1.3.3.2 – O Cifrário Nihilista Este é uma variante do cifrário anterior, em que as linhas são igualmente permutadas . 3 e e b a a c
36
2 x o o t o e
6 i a s r n x
4 1 r e m t r n c a ma e h
5 c m a a a r
Pode ser usada uma palavra-chave, na qual as letras possuam exatamente esta ordem alfabética (326415). Por exemplo, a palavra-chave DIRECTOR, cuja primeira letra é C=1, a segunda letra é D=2 (pela ordem alfabética), etc., tem a seguinte ordem numérica permutada: 24631857.
A permutação das linhas pode obedecer ao mesmo critério anterior, ou pode ser utilizada uma outra chave numérica. Supondo a permancência do critério, resultará: 1 2 3 4 5 6
3 e e b a a c
2 x o o t o e
6 i a s r n x
4 1 r e m t r n c a ma e h
5 c m a a a r
3 2 6 4 1 5
3 b e c a e a
2 o o e t x o
6 s a x r i n
4 1 r n m t e h c a r e ma
5 a m r a c a
O criptograma resultante é: BECAEAOOETXOSAXRINRMECRMNTHAEAAMRACA Apesar da complexidade da anagramação, este cifrário contém todos os elementos que permitem a sua decifração por análise de freqüência. 1.3.3.3 – Transposição de Dupla Coluna O método de transposição por coluna dupla utiliza diferentes chaves numéricas (que podem ser memorizadas através de palavras-chaves). Eis um exemplo (chaves numéricas: 24631857 e 364512): 2 46 31 8 5 7 PORTOF O I MINADODE VESE REV I TADOPOR T
3 O V O V I
6 4 5 1 2 DR P P M T T A E O I E A O D R R N S D E I T P O
A matriz da esquerda é preenchida seguindo a seqüência numérica da matriz à direita. Em seguida, o criptograma é formado fazendo a leitura seqüencial numérica da matriz esquerda: 37
PEOSP MODDO OVOVI RTERI PAANT DTIRE
37
Note-se que a inserção de nulas foi feita reescrevendo o início da mensagem, nas duas matrizes.
1.3.3.3.1 – A Cifra ÜBCHI Durante a Primeira Guerra Mundial, e esporadicamente durante a Segunda, os alemãe usaram um sistema de cifragem por transposição dupla de colunas com chave38 chamado Cifra Übchi.39 Este método usa uma grade de N colunas (12 no exemplo). Uma palavra-chave é usada na primeira fileira, com as letras em ordem alfabética. Seja codificar a seguinte mensagem: atacar aviões na base naval em Sincity. A palavra-chave fica na fileira superior; mas, para o entendimento da cifra, não será necessário o seu uso. A segunda fileira contém (desordenadamente) os números de um a doze.40 O texto da mensagem clara é inserido abaixo da fileira numérica, linha por linha, da esquerda para a direita.
10 2 A T N A M S
8 A B I
6 C A N
3 A S C
1 R E I
12 5 11 9 4 7 A V I O E S N A V A L E T Y
A seguir, as colunas de 1 a 12 são transcritas em sequência linear por fileiras, de cima para baixo: coluna 1 (REI) seguido de coluna 2 (TAS) até a coluna 12 (ANT).
10 2 8 6 R E I T A YCA A NM I
3 A N V
1 12 5 11 9 4 7 S A S C E L V S E A B I OA A N T
Podem ser introduzidas nulas em quantidade qualquer (por exemplo: DTEPOQW).
10 2 8 6 R E I T A Y C A A NM I O QW
3 A N V
1 12 5 11 S A S C S E A B A N T D
9 E I T
4 L O E
7 V A P
Faz-se uma última transposição, nos mesmos moldes da primeira, ou seja, transcrevendo as colunas em seqüência linear, de cima para baixo.
38
Este é um exemplo de sistema de supercifragem. Este sistema já havia sido descrito por John Falconer em 1685, em sua obra Cryptomenysices Patefacta. 40 Os números, na verdade, correspondem à ordem das letras da palavra-chave. 39
10 2 8 S S A E S A MW E A E N
6 E T I
3 Y T T
1 12 5 11 9 N Q A N V A I V A P R A A O C
4 L I B
7 O C D
O criptograma final é: SSAEY NQANV LOESA TTAIV APICM WEITR AAOCB DAENR Uma última nula foi acrescentada (R) ao criptograma, para distribuir os grupos por cinco letras. O destinatário decifra a mensagem realizando a ordem inversa de ciframento. As letras são colocadas em uma grade de 12 colunas, com a palavra-chave e a numeração das colunas (que são conhecidos por ele). Insere-se em seguida o criptograma por colunas, na ordem numérica. Retiram-se as nulas, e repete-se a operação de transferência das linhas para as colunas numeradas.41 Este método por transposição dupla de colunas foi quebrado pelos franceses ainda durante a Primeira Guerra Mundial, o que não impediu que ele voltasse a ser usado pela Wermacht em 1941 e 1942 (com as conseqüências óbvias). 1.3.4 – Sistemas Mistos de Transposição Se os caracteres da mensagem clara forem transpostos como caracteres simples, diz-se que realizou-se a transposição monográfica. Entretanto, a mensagem clara pode ser inscrita na matriz de transposição em grupos de dois caracteres (dígrafos), em grupos de três caracteres (trígrafos), ou em grupos de n caracteres. Esta forma de transposição é chamada de transposição poligráfica. 1.3.5 – Transposição em Grade Giratória Neste tipo de cifragem é utilizada uma grade NxN42 (6x6, no exemplo), na qual existem quadrados recortados (os quadrados em cor branca). Para cifrar, escreve-se um texto qualquer,43 escolhido de forma a que várias letras distribuídas possam surgir através de uma grade convenientemente recortada. Para decifrar, uma grade semelhante é aplicada sobre o mesmo texto, sendo lidas apenas as letras que aparecem nos quadrados claros. São realizadas três rotações sucessivas (normalmente, para a direita). As letras que surgem nos quadrados claros após as rotações, juntas, formarão a mensagem decodificada.44
41
Para fazer uma encriptação UBCHI, veja-se: http://rumkin.com/tools/cipher/ubchi.php. Podem ser, por exemplo, 4x4, 5x5, 6x6, etc. 43 O qual pode, em si mesmo, ser um texto claro ou um texto já cifrado por outra forma (neste caso, o criptograma foi sobrecifrado), devendo sofrer algum outro tipo de decodificação. 44 Os Cifrários por Grade Giratória foram estudados por Eduard von Fleissner von Wostrowitz (18251888). Ele criou o sistema denominado Patronen-Geheimschrift. Cifrários por grade indefinida foram introduzidos pelo italiano Luigi Sacco, durante a Primeira Guerra Mundial. 42
Observe-se que serão obtidas nove letras, em cada leitura, correspondentes aos quadrados claros da grade. Obviamente, outros padrões podem ser realizados, conforme o número de quadrados claros. Um exemplo do uso deste método é dado na obra de Jules Verne, Matias Sandorf. Uma mensagem cifrada é interceptada, com o seguinte conteúdo: ihnalz arnuro odxhnp aeeeil spesdr eedgnc
zaemen trvree estlev ennios erssur toeedt
ruiopn mtqssl eeuart noupvg ouitse artuee
Após várias peripécias o herói da história percebe que o criptograma pode ser lido por uma grade giratória 6x6 (as mesmas anteriores, usadas como exemplo). Sobre a mensagem interceptada, foram lidas as seguintes letras (sobre a primeira coluna):
A leitura por grade forma um outro criptograma (a mensagem fora sobrecifrada), que após ser decifrado, revela a mensagem final. Em uma variante deste método, uma mensagem clara é enviada, sobre a qual o destinatário aplica a grade de leitura. A leitura através dos quadrados pode produzir uma mensagem que estava oculta (esteganografia) e que pode corresponder a um texto claro
(inteligível), ou corresponder a um texto ainda cifrado, que exige uma chave para ser lido. A encriptação por grade giratória, apesar de parecer segura, pode ser quebrada através do método de análise de freqüências de letras (freqüências simples, duplas e triplas). 1.4 – Encriptação por Esteganografia45 (Clássica) Quanto à esteganografia, foi também usada extensamente, tanto no Ocidente quanto no Oriente. Uma forma bastante astuciosa de esteganografia foi utilizada pelo abade beneditino Johannes Trithemius. Seu sistema era conhecido como as Ave Marias. Ele era composto por 14 alfabetos, nos quais, a cada letra, corresponde uma palavra ou grupo de palavras. O texto cifrado final, quando lido normalmente, apresenta ser um texto coerente, como se fosse uma oração ou glorificação religiosa, em latim. O quadro mostrado a seguir apresenta um dos alfabetos de Ave Maria:
B C D E F G H I-J K L
no céu para todo o sempre um mundo sem fim numa infinidade perpetuamente por toda a eternidade durável incessantemente irrevogavelmente eternamente na sua glória
N no paraíso O hoje P na sua divindade Q em Deus R na sua felicidade S no seu reino T na sua majestade U-V-W na sua beatitude X na sua magnificência Y ao trono M na sua luz
Se se fosse codificar a palavra Pedro, por exemplo, resultaria: Na sua divindade perpetuamente numa infinidade na sua felicidade hoje.46 Algumas palavras "nulas" podem ser adicionadas, para disfarçar ou para dar sentido ao texto. Por se constituir em um conjunto normal de palavras, o deciframento da mensagem cifrada exigiria o cotejo entre uma grande quantidade de mensagens interceptadas, até encontrar as relações apropriadas. Por outro lado, era um sistema que exigia um tempo considerável para a codificação, sendo inviável para mensagens longas, porque o texto encriptado se tornava muito grande. O inconveniente do sistema é o tempo necessário para a transposição do texto, e o grande aumento do texto esteganografado resultante. Por outro lado, como a mensagem cifrada se apresentava como um conjunto normal de palavras, os eventuais decifradores, devido às numerosas equivalências, teriam que acumular uma massa enorme de material antes de encontrar as semelhanças necessárias para obter a chave. 45
Para uma introdução leve ao assunto.ver: http://www.gta.ufrj.br/grad/07_2/thiago_castello/index.html. Obviamente, seria uma ingenuidade separar cada parte por vírgulas, ou colocar cada parte em parágrafos. 46
1.4.1 - A Grelha de Cardano A chamada Grelha de Cardano, ou Grelha de Richelieu (como é também conhecida), é um sistema de codificação por esteganografia. Consiste em uma folha de material rígido (conhecida como Cardano Grille) na qual existem aberturas retangulares colocadas em intervalos irregulares, da altura de uma linha de texto e de comprimento variável. Seu uso é bastante simples: coloca-se a matriz sobre uma folha de papel e escreve-se a mensagem nas aberturas. Depois retira-se a grelha, sendo que o espaço entre as letras é preenchido com letras quaisquer. Para decodificar, coloca-se uma grelha idêntica sobre o texto recebido, para fazer aparecer a mensagem recebida. Apesar de apresentar uma similitude com o processo de cifragem por grade, este método é um pouco mais seguro e mais eficiente de esconder mensagens do aquele. Mas, no todo, possui uma segurança muito baixa. Uma variante desse processo consiste em escolher letras ao longo de um texto (um livro raro ou conhecido, por exemplo, escolhido de comum acordo47), de forma que formem uma mensagem. Em seguida, as letras (cuja ordem no texto segue uma seqüência numérica) são indicadas, no texto cifrado, por um número (com vários algarismos, em quantidade variável, mas não em ordem numerada – por exemplo: 116; 3; 19; 607; 61; etc) que identifica a posição de cada uma no texto, página por página. No parágrafo anterior, por exemplo, os números: 20; 3; 6; 12; 5; 9; 19 (não são contados os espaços) indicam a palavra Cardano.48 Por este método, o texto-chave não necessita ser muito extenso. De modo diverso, podem ser escolhidas as letras iniciais das palavras, que são então numeradas (nesse caso, o texto-chave deve ser bem extenso; uma obra literária qualquer pode ser utilizada). Cada letra inicial entra na composição da mensagem. A mesma palavra anterior, Cardano, seria assim formada, de acordo com esse processo: 9; 13; 20; 3; 28; 41; 21.49 Este método é bastante eficiente para cifrar mensagens. Para mostrar como ele pode ser seguro, basta citar o caso da Cifra Beale. Este é um texto cifrado famoso, conhecido desde o final do século XIX nos Estados Unidos (a cifragem foi feita usando as letras iniciais das palavras do texto-chave). Existem três páginas de cifras50, cada uma contendo uma série de números de até três algarismos. Supostamente, as cifras mencionam um tesouro enterrado, com a sua localização. Após décadas de esforços, apenas a segunda cifra foi decodificada.51 A primeira e a terceira, que presumidamente descrevem a localização do tesouro, permanecem indecifráveis. Uma variante deste método de cifra (denominado esteganograma) é o uso do primeiro caracter de cada capítulo de um livro qualquer, para ocultar uma mensagem. 47
Este processo é conhecido como Cifra de Livro, e utiliza um livro qualquer como chave. Observe-se que letras iguais não devem ser indicadas em posições sempre iguais no texto, e sim, escolhidas em outras posições. A letra a, que surge em Cardano duas vezes, foi escolhida segundo a sua 3ª. e 5ª. posição, no texto-chave. 49 O único problema desse método é que, se o livro-chave for descoberto, todas as mensagens passadas, atuais e futuras serão decodificadas. 50 As cifras podem ser vistas nas páginas 105 a 107, em Singh. 51 O texto-chave que foi utilizado para a segunda cifra foi a Declaração da Independência. 48
Por exemplo, a obra de Aldus Manutius (1499), Tentativa de Amor em Sonho, contém um famoso esteganograma: Monge Francisco Colonna Ama Polia Apaixonadamente, sentença esta que resulta da justaposição da primeira letra do texto de cada um dos 38 capítulos da obra (que forma uma sentença com 38 letras no idioma original).
1.4.2 – A Cifra de Bacon O sistema de código criado por Sir Francis Bacon, também conhecido como Sistema de Encobrimento, foi divulgado no capítulo 1, livro 6, de sua obra De Augmentis Scientiarum52. Ele consiste em um arranjo de cinco elementos a partir de duas categorias, designadas a e b, em um alfabeto de 24 letras (onde I=J; e U=V). A B C D E F G H I/J K L M
aaaaa N abbaa aaaab O abbab aaaba P abbba aaabb Q abbbb aabaa R baaaa aabab S baaab aabba T baaba aabbb U/V baabb abaaa W babaa abaab X babab ababa Y babba ababb Z babbb
Bacon realizou o encobrimento de dois elementos de duas categorias usando dois conjuntos de letras semelhantes porém distintas. Para cada uma das letras do alfabeto é atribuído um grupo de 5 caracteres compostos pelas letras a e b. Na encriptação, são usados os primeiros caracteres de cada letra. Por exemplo, na mensagem atacar pela manhã:
52
Tem o título em inglês de The Advancement of Learning.
ATACARPELAMANHA a b a a a ba a a a a a a a a I R A O criptograma resultante é a palavra IRA. Apesar de sua sofisticação, este código mostrou-se bastante vulnerável, sendo facilmente decifrado. 1.4.3 – A Tinta Invisível Uma forma muito comum de esteganografia utiliza tinta invisível para ocultar o texto. Esta tinta é uma substância especial usada para escrever, a qual se torna invisível após secar. Ela deve se tornar visível por algum meio, como a aplicação de calor, produto químico ou um tipo especial de iluminação (luz ultravioleta ou luz negra). O escritor norte-americano Edgar Alan Poe, em seu extraordinário conto O Escaravelho Dourado, usou o tema da tinta invisível para construir a sua trama. Em sua história, a tinta invisível foi usada pelo pirata Capitão Kid para escrever uma carta onde ele revelava o local onde seu o seu tesouro, acumulado ao longo de anos por saques e roubos em navios, estava enterrado. A carta foi parar nas mãos de um morador de uma ilha, e a mensagem invisível, por um acaso, acaba se lhe tornando visível, quando ele aproxima o papel do calor de uma lareira. No final, após várias peripécias, ele consegue ler e decifrar o texto, e obviamente, recuperar o tesouro.53 O uso da tinta invisível é um processo pouco seguro,54 e por esta razão, é muito pouco utilizado atualmente. Outros processos de esteganografia foram desenvolvidos, os quais serão estudados oportunamente. 1.5 – Encriptação Mista ou Híbrida A encriptação mista ou híbrida é a que usa processos simultâneos de substituição (de acordo com um diagrama de Políbio) e transposição, como técnicas que dificultem a decifração do criptograma. 1.5.1 – A Cifra ADFGX O advento do telégrafo obrigou a que se criasse um código que pudesse proteger os textos de telegramas. Com este objetivo, a Alemanha criou uma nova cifra com base na combinação do tabuleiro de Polybius e de palavras-chave. Esta cifra era conhecida como Cifra ADFGX, porque essas eram as únicas letras usadas como cifra. Essas letras foram escolhidas porque seus equivalentes no código Morse eram difíceis de confundir, o que reduzia a chance de erros. 53
Na trama elaborada por Edgar Alan Poe, ele utiliza sucessivamente os processos de esteganografia e de cifragem por substituição monoalfabética. E de uma maneira magistral, Poe introduz o leitor à questão da decifração pela análise de freqüência de letras, em um sistema monoalfabético. 54 Para ser completamente segura, a tinta deveria ser insolúvel em água, ser não-volátil, invisível à luz ultra-violeta, não ser ativada pelo calor, não reagir com a maioria dos reagentes químicos, não decompor ou depositar cristais, não mudar de cor na presença de ácidos ou bases
O primeiro passo foi criar uma matriz semelhante ao tabuleiro de Polybius: A D F G X
A A F L Q V
D B G M R W
F C H N S X
G D I/J O T Y
X E K P U Z
As letras de texto claro seriam representadas por pares de letras, por fileira/coluna. No exemplo, a letra cifrada "B" torna-se "AD", e a letra "O" torna-se "FG" (nem todas as matrizes ADFGX tinham o alfabeto organizado em ordem alfabética). Usando a matriz, e sendo a mensagem clara attack harbour,55 para codificá-la seria feito o seguinte. Primeiro, encontravam-se os pares de letras correspondentes a cada letra do texto claro. Neste caso, encontra-se: AA GG GG AA AF DX DF AA GD AD FG GX GD O próximo passo seria determinar uma palavra-chave, a qual poderia ter qualquer comprimento, mas não poderia ter letras repetidas. Para este exemplo, foi usada a palavra CANDOUR56. Cria-se a seguir uma grade com a palavra-chave soletrada no topo. A mensagem cifrada é então escrita na grade, separando os pares em letras individuais e passando de uma linha para a outra. C A A A G
A A A A G
N G F G X
D G D D G
O G X A D
U G D D
R A F F
A grade é então reorganizada de forma que as letras da palavra-chave fiquem em ordem alfabética, e alterando as colunas correspondentes às letras de forma apropriada. A A A A G
C A A A G
D G D D G
N G F G X
O G X A D
R A F F
U G D D
O criptograma era realizado lendo as letras pelas colunas sucessivas:
55 56
Atacar o porto. Franqueza.
AAAG AAAG GDDG GFGX GXAD AFF GDD 1.5.2 – A Cifra ADFGVX A Cifra ADFGVX foi desenvolvida pelo coronel Fritz Nebel, do exército alemão57, no final da Primeira Guerra Mundial, a partir da cifra ADFGX, considerada menos segura. Para cifrar a ADFGVX,58 toma-se uma grade 6x6, onde são colocadas, em cima e lateralmente essas letras, e dentro da grade, aleatoriamente, 26 letras e 10 dígitos.
A mensagem a ser cifrada é: attack at 10 pm. Inicialmente, pega-se cada letra da mensagem, que é substituída pelas duas letras que determinam sua posição. Assim, a letra a, por exemplo, é substituída por DV; a letra t é substituída por DD; a letra c é substituída por FG; e assim sucessivamente. Obtem-se a série: a
t
t
a
c k
a
t
1
0
p
m
DV DD DD DV FG FD DV DD AV XG AD GX Na segunda fase da codificação (a transposição), utiliza-se uma palavra-chave (MARK), que é escrita em uma nova grade: M D D F D A A
57 58
A V D G V V D
R D D F D X G
K D V D D G X
Este código foi usado pelos alemães durante as últimas ofensivas da guerra. O exemplo foi retirado de SINGH.
A V D G V V D
KMR DDD VDD D F F DDD GAX XAG
O primeiro criptograma é transcrito em ordem, dentro da grade. Esta, em seguida, é reposicionada em ordem alfabética (AKMR), e o texto cifrado final é lido de cima para baixo, resultando o criptograma seguinte: VDGVVDDVDDGXDDFDAADDFDXG O destinatário precisa conhecer a posição das letras na primeira grade, e a palavra-chave. Como o texto cifrado é formado por apenas seis letras (que formam os rótulos das fileiras e colunas), o criptograma resultante acaba sendo formado por uma combinação duas a duas, dessas mesmas seis letras.59 Esta cifra, que os alemães consideravam indecifrável, foi quebrada parcialmente pelo criptoanalista francês Georges Painvain, em 1918. Isto não significa, entretanto, que seja uma cifra fraca. A criptoanálise feita por Painvain teve por base a análise de freqüências e o uso altamente estilizado das mensagens interceptadas, que seguiam rígidos protocolos militares (ela ajudou a conter a última investida alemãe contra a França). A solução geral para a sua decodificação só foi encontrada em 1933.60 1.5.3 – Sistemas de Código de Fracionamento Seja, por exemplo, a matriz de substituição biliteral dada a seguir:
A codificação inicial é feita colocando as díadas numéricas sob a mensagem clara. Por exemplo, a codificação da mensagem atacar a cidade.
59
A escolha dessas letras foi determinada pelos pontos e traços que as formam, no Código Morse, que minimizam erros de transmissão. (Cf. Singh). 60 Ver: General Solution of the ADFGVX Cipher System, por J. Rives Childs. Um software para a decodificação do ADFGVX pode ser encontrado em: http://www.richkni.co.uk/php/crypta/adfgvx.php. Veja-se no Capítulo III a sua criptoanálise.
ATACARACI DADE 2 42 3 2 22 31 3 2 3 2 5 55 1 5 45 15 2 5 2 3 Em seguida, os dígitos são combinados em grupos de dois e convertidos novamente em caracteres, através da matriz de substituição, obtendo-se o criptograma: 24232223132325551545152523 R E H E B E A Z J T I A E Uma variante dessa técnica utiliza a divisão do texto claro em grupos de cinco caracteres, sendo que o código de fracionamento é aplicado a estes grupos. Por exemplo, seja cifrar a mensagem atacar pela retaguarda. ATACA RPELA RETAG UARDA 2 4 2 3 22 1 2 1 2 2 24 2 3 1 2 2 3 2 5 5 5 1 54 1 3 4 5 4 35 5 4 5 5 4 1 5 A codificação é feita por blocos, como mostrado a seguir. 2423255515 R E A Z I
2121241345 S S R B T
1223255415 U E A Y J
Ainda uma outra variante combina a substituição monoalfabética biliteral com a transposição por colunas. Usa-se a matriz de substituição biliteral.
Tomando-se a mesma mensagem clara anterior, tem-se: A T A C A R P E L A R E T A G U A R D A BE DE BE CA BE BD AA BC AD BE BD BC DE BE CD AB BE BD CB BE Em seguida, o texto cifrado é inscrito em uma matriz de transposição de colunas (364512):
É transcrito novamente pela seleção de colunas em uma ordem numérica a partir dos números mistos, gerando o seguinte texto cifrado: BB AB CB ED DC DD BC AB DA CD BB BB BB EE CD EE EE AA EE BB Agrupados dois a dois, os caracteres são convertidos em um texto codificado de um só caracter com a matriz de substituição, resultando o seguinte criptograma: HUDYO|QEUMG|HHHZG|ZZPZH 1.5.4 – O Sistema Chase Este sistema foi introduzido pelo professor Pliny Earle Chase em 1859. É a primeira descrição que foi publicada, de um sistema de fracionamento. Ele usa uma matriz de substituição biliteral com índices numéricos. Além dos 26 caracteres do alfabeto, são usados os símbolos “.” , “,” , “–“ , “+”. O exemplo abaixo usa a palavra-semente LEXICOGRAPH, à qual se seguem as letras restantes do alfabeto.
O texto claro é escrito em díadas verticais numéricas colocadas sob ele, conforme as posições na tabela. Por exemplo, com a mensagem computer, ficaria: C OM P U T E R 1 2 2 1 3 3 1 1 5 6 8 0 3 2 2 8
Em seguida, o número inferior é multiplicado por 9: 12 2 1 3 3 1 1 5 11 2 2 9 0 5 2 Acrescenta-se o algarismo 1 ao início da fileira superior, sobre o 5 da fileira de
baixo: 61
61
O primeiro algarismo (1) serve para formar o primeiro caracter, que é a letra C, no caso.
1 1 1 2 1 3 3 1 1 5 1 1 2 2 9 0 5 2 C L L Y E - + C E
As díadas são transformadas em seguida de volta para a forma de caracteres, usando a matriz de substituição, formando o texto cifrado final: CLLYE–+CE. Como caracteres idênticos resultam de díadas idênticas, pode-se concluir que este código não é inviolável. 1.5.5 – Chaves e Palavras-Chave As chaves de substituição podem tomar duas formas: O alfabeto padrão (standard), no qual as letras são substituidas por deslocamento. O código tem então um alfabeto corrido e um alfabeto cifrado. Alfabeto corrido: 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 Alfabeto cifrado: 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 O alfabeto misto, que usa uma palavra-chave ou uma frase-chave. Há dois métodos de alfabeto misto: O primeiro usa uma palavra-chave inicial, a qual é juntada ao alfabeto normal sem os caracteres desta palavra. Por exemplo, usando a palavra-chave ÁRVORE. Retiram-se os caracteres repetidos e forma-se o alfabeto: ARVOEBCDFGHIJKLMNOPQSTUWXYZ O segundo método usa a matriz de caracteres para misturar o alfabeto. Seleciona-se a palavra-chave, eliminando as letras repetidas (ÁRVORE SECA = ARVORESECA = ARVOESC). As letras da palavra-chave são colocadas na primeira fila de uma matriz (ou bloco), sendo as filas subseqüentes preenchidas conforme a ordem seguinte das letras do alfabeto. A R B D K L UW
VO F G MN XY
E S C H I J P QT Z
O alfabeto resultante é formado lendo as colunas de cima para baixo: ABKURDLWVFMXOGNYEHPZSIQCJT Nos métodos de codificação por transposição, usa-se uma palavra-chave na matriz, e abaixo dela, um algarismo que define a ordem alfabética com que cada letra surge na palavra. Por exemplo, a palavra-chave DIRECTOR, tem a seguinte ordem numérica: 24631867.
D I R E C T O R 2 4 6 3 1 8 6 7
Na decodificação a palavra-chave é introduzida na matriz, e a transposição inversa segue a ordem definida pelos números. 1.5.5.1 – O Sistema de Autochave Neste sistema polialfabético, a mensagem do texto claro ou seu texto cifrado equivalente serve como chave, a partir de um caracter inicial ou um grupo de caracteres. No exemplo dado a seguir, a letra O é usada para iniciar a codificação por Vigenère, e usa o próprio texto cifrado como o restante da chave (cf. Katzan, Jr.). Chave: OQQDFJUUFUCPTV J WPGG I Texto claro: C A N C E L A L P I N E C O N T R A C T Texto cifrado: Q Q D F J U U F U C P T V J W P G G I B Neste caso, cada letra do texto cifrado (a partir da letra O) é levada para cima à direita, servindo para cifrar a letra seguinte. 1.5.5.2 – Sistema de Autochave Corrido Em outra variante, a codificação por Vigenère pode começar por uma palavrachave, e o texto corrido serve como restante da chave. Chave: HOR SECAN CE L ALP I NE CON Texto claro: C A N C E L A L P I N E C O N T R A C T Texto cifrado: J O E U I N A Y R M Y E N D V G V C Q G O destinatário da mensagem usa a palavra-chave (HORSE) para recuperar o início da mensagem clara, a qual vai sendo usada em seguida (letra por letra) para decodificar o restante da mensagem (por exemplo, a primeira letra recuperada, “C”, é colocada à frente da palavra-chave, e sucessivamente, “ANCEL...”). 1.5.5.3 – O Sistema de Chave Aleatória O advento da Grande Guerra (Primeira Guerra Mundial) trouxe a necessidade urgente de encontrar ou aperfeiçoar códigos que pudessem permanecer invioláveis, quando atacados pelos criptoanalistas. Uma das respostas a este desafio foi proporcionada pelo major Joseph Mauborgne, do exército americano, que introduziu o conceito de chave aleatória, a ser usada em conjunto com a Cifra de Vigenère. Por este método, seriam produzidas chaves em quantidade suficiente para as comunicações secretas, que seriam usadas uma única vez.62
62
E por isto chamadas One time pad (OTP), ou Cifra de Chave Única. A chave, neste caso, deve ser tão grande quanto o texto, e jamais deve ser repetida.
A necessidade de usar uma única vez cada chave devia-se à rapidez e a facilidade cada vez maior com que se decodificavam os textos secretos, usando a análise de freqüência. Desse modo, se a chave fosse usada uma única vez, e tivesse o seu comprimento igual ao do texto aberto, seria impossível descobrir padrões ocultos. A criptanálise, neste caso, exigiria testar milhares ou milhões de possibilidades, uma alternativa que nem sempre estava ao alcance do criptoanalista.63 1.5.6 – O Sistema Perfeito de Criptografia Na busca por um sistema perfeito de criptografia vários sistemas foram propostos. Os sistemas monoalfabéticos foram substituídos pelos poligráficos (polialfabéticos); foram sugeridos os sistemas homófonos; o sistema de introdução de nulas; etc. Com o sistema Vigenère, ao se constatar que as chaves curtas eram fáceis de decifrar, foram sugeridos outros métodos, como o sistema de autochave, chave aleatória, sobrecifração pelo uso de cifrários compostos, entre outros. Este último método é constituído por dois cifrários, S1 e S2, ligados em série. A sua chave é composta pelas duas chaves parciais de cada cifrário. Entretanto, o que geralmente ocorre é que, se são ambos cifrários por rotação, as chaves que codificam, por exemplo, a letra A em D, e a letra D em K, na verdade o que está acontecendo é que há um único crifrário por rotação, que transforma A em K. Isto equivale a dizer que, a composição de dois cifrários de Vigenère com palavras-chave de extensão M e N é equivalente a um único cifrário de Vigenère cuja palavra-chave tem uma extensão igual ao mínimo múltiplo comum dos números M e N. De todo modo, a segurança deste sistema multichaves não é perfeita. 1.5.6.1 – O Código Vernam Este código foi inventado em 1917 por Gilbert S. Vernam, um engenheiro da AT&T (American Telephone and Telegraph Company). Ele era implementado por um dispositivo eletromecânico, o qual permitia eliminar o fator humano na codificação/decodificação. O Código Vernam utiliza os conceitos de Lógica Matemática. Ele foi primeiramente aplicado ao código Baudot (um código semelhante ao código Morse) de cinco bits, usando o operador OU-exclusivo (XOR), conforme a tabela mostrada a seguir:
Se o texto cifrado fosse, por exemplo, 10110, e a chave fosse 01010, a codificação seria:64
63
O teste de um código forte através do uso sucessivo de milhares ou milhões de chaves, é denominado ataque pela força bruta. 64 Note-se que esta não é uma adição binária; os resultados dependem unicamente da tabela.
1 0 1 1 0 Texto corrido 0 1 0 1 0 Chave 11100 Texto cifrado O sistema de Vernam era uma cifra que combinava uma mensagem com uma chave lida de um laço de fita adesiva de papel. Inicialmente, era usado um rolo extenso, perfurado com dígitos binários aleatórios. Em sua formulação original, o sistema de Vernam não era inquebrável, porque a chave poderia ser reutilizada. Ao se perceber que as chaves periódicas eram vulneráveis à decodificação, passou-se a usar dois rolos, um com 1000 caracteres, e o outro com 999 caracteres. Como as permutas entre as chaves permitem 999.000 combinações, isto se mostrou satisfatório para resolver o problema da chave periódica. O Código Vernam é considerado teoricamente inviolável, se o período da chave for igual ou maior do que o comprimento da mensagem.
CAPÍTULO II HISTÓRIA CONCISA DA CRIPTOLOGIA 2.0 – Antiguidade A antiguidade grega, egípcia e romana pode ser caracterizada como a era da criptografia ingênua, marcada por métodos extremamente simples, mas que eram suficientes para as necessidades da época. Entre 600 e 500 a.C., os hebreus utilizavam a cifra de substituição simples (de fácil reversão e fazendo uso de cifragem dupla para obter o texto original), monoalfabética e monogrâmica (em que os caracteres são trocados um a um por outros), e com ela escreveram o Livro de Jeremias. O chamado Codificador de Júlio César ou Cifra de César apresentava uma das técnicas mais clássicas de criptografia, qual seja a substituição simples, em que as letras da mensagem são substituídas por outras, avançando três posições à frente no alfabeto. 2.1 – Idade Média Os antigos e ingênuos métodos de encriptação da antiguidade foram aperfeiçoados gradativamente ao longo da Idade Média e Renascença, principalmente no império islâmico. No império muçulmano, sob o califado abássida, entre os anos de 700 a 1200, que foi um período extraordinário de paz e prosperidade, houve um enorme desenvolvimento cultural, durante o qual vários eruditos se sobressaíram, em vários campos do conhecimento.65 A necessidade de governar um extenso território obrigou a civilização árabeislâmica a fazer avançar várias disciplinas,66 entre elas a criptografia e a criptoanálise. Com essa última, houve uma grande evolução nos processos de desencriptação de textos disfarçados, principalmente através da análise de freqüência de letras.67 Os principais artífices árabes do desenvolvimento da criptografia foram os seguintes: al-Khalil, ou Abu Abd al-Rahman al-Khalil ibn Ahmad ibn Amr ibn Tammam al Farahidi al-Zadi al Yahmadi (718-786) escreveu o livro Kitab al Mu'amma (O livro das mensagens criptográficas68), em grego, para o imperador bizantino. Uma forma de criptoanálise até hoje usada foi criada por ele, quando decifrou um criptograma bizantino. Ele supôs, corretamente, que o texto iniciava por Em nome de Deus Misericordioso, que era um modo comum de começar qualquer texto na época.69 al-Kindi (801-873), ou Abu Yusuf Yaqub ibn Is-haq ibn as Sabbah ibn 'omran ibn Ismail Al-Kindi, escreveu Risalah fi Istikhraj al Mu'amma (Escritos sobre a decifração de mensagens criptográficas). Este livro foi preservado, sendo considerado o
65
Para melhores informações veja-se SINGH, 2001. A denominação Cifra e também zero utilizada em muitas línguas vem da palavra árabe sifr, que significa nulo. 67 Aos poucos se percebeu que um idioma qualquer possui uma estrutura léxico-gramatical que lhe é inerente, e a qual dificulta extraordinariamente a criação de um código secreto seguro. 68 Este livro, infelizmente, foi perdido. 69 Este método criptanalítico, conhecido como método da palavra provável, tornou-se padrão, e vem sendo usado em decifração de mensagens desde a Segunda Guerra Mundial. 66
mais antigo livro sobre criptologia. Este livro apresenta as primeiras análises de frequência. Em 855 Abu Bakr Ahmad ben Ali ben Wahshiyya an-Nabati publicou vários alfabetos de cifras, mas que eram usados para mágicas. Ibn Dunainir ou Ibrahim ibn Mohammad ibn Dunainir (1187-1229) é autor do livro (redescoberto em 1987), Maqasid al-Fusul al-Mutarjamah an Hall at-Tarjamah (Explicações claras para a solução de mensagens secretas). Nesse livro uma inovação importante foi introduzida, o uso das cifras algébricas, ou seja, a substituição de letras por números que podem ser transformados aritmeticamente. Ibn Adlan ou Afif ad-Din ibn Adlan ibn Hammad ibn Ali al-Mousili an-Nahwi al-Mutarjim, é autor de um livro (também redescoberto em 1987), Al-Mu'allaf lil-Malik al-Ashraf (Escrito para o Rei al-Ashraf), o qual contém explicações detalhadas acerca do tema criptoanálise. Por volta do ano 1000, no Emirado Ghaznavida, fundado por Sebük-Tigin no Afeganistão, registraram-se mensagens trocadas usando a criptografia. Por volta do ano 1100 começaram a surgir alguns tímidos usos para a criptografia em geral. Em 1119 foi fundada a Ordem do Templo, uma Ordem de monges combatentes. Esta Ordem tinha por finalidade proteger os peregrinos na Terra Santa, e proporcionar meios de transmissão segura de fundos advindos do comércio. Para isso, a organização cifrava suas letras de crédito, utilizando um método próprio (a Ordem foi abolida em 1312). Em 1226 um tipo de criptografia política começou a ser usado nos arquivos oficiais de Veneza. Nele, pontos e cruzes substituíam as vogais em algumas palavras esparsas. Cerca de 1250, o frade franciscano inglês Roger Bacon (1214-1294), que possuía vastos conhecimentos sobre linguística, física e ciências naturais, descreveu sete métodos diferentes de cifras. Por volta de 1300, Abd al-Rahman Ibn Khaldun escreveu o Muqaddimah, um importante relato da história que incluía as diferentes das formas das letras como um código usado entre escritórios militares e de controle de impostos. Ele fez também referências à criptanálise. Ibn Ad-Duraihim (1312–1361), ou Taj ad-Din Ali ibn Muhammad ibn Abdul'aziz ibn ad-Duraihim, foi autor do livro redescoberto em 1987, Miftah al-Kunuz fi Idah al-Marmuz (Chaves para a elucidação de mensagens secretas) que contém uma classificação das cifras, análises de frequência em várias línguas, uma tabela de Trithemius(Vigenère) e grades de transposição. Em 1378, depois do Cisma de Avignon, o antipapa Clemente VII decidiu unificar o sistema de cifras da Itália Setentrional, designando Gabriele Lavinde para coordenar a tarefa. Lavinde compilou uma coleção de cifras num manual. Com seu alfabeto de substituição combinada (código/cifra), Lavinde uniu a cifra de substituição a um código com listas de palavras, sílabas e nomes equivalentes. Este sistema foi utilizado por diplomatas e civis europeus e americanos por mais de 450 anos. Em 1404, Leone Battista Alberti, arquiteto, filósofo, poeta e criptologista italiano, inventou o princípio de cifras usando o polialfabeto, conhecido como Cifra de Alberti. Ele inventou também uma das primeiras máquinas de codificação assistida, usando o seu disco de cifras. Ele é considerado como um dos precursores da criptografia ocidental. Em 1412, Qalqashandi, Shihab al-Din abu Abbas Ahmad ben Ali ben Ahmad Abd Allah al-Qalqashandi (1355-1418) escreveu a Subh al-a `sha, uma enciclopédia de 14 volumes em árabe, a qual incluía uma seção de Criptologia. Qalqashandi credita a
Taj ad-Din `Ali ibn ad-Duraihim ben Muhammad ath-Tha`alibi al-Mausili (1312-1361) a autoria dos escritos sobre criptologia (que se perderam). A obra inclui substituição e transposição, bem como uma cifra com múltiplas substituições para cada letra do texto original. Inclui também uma explicação da criptoanálise, com o uso de tabelas de frequência de letras e conjuntos de letras que podem ocorrer juntas numa palavra. 2.2 – O Renascimento A partir do século XVI, com o início do Renascimento, a contínua animosidade entre os países europeus70 e as contínuas alianças e rompimento de alianças levara a que os governantes procurassem meios de ler a correspondência diplomática dos inimigos, atuais ou futuros. Com este objetivo, criaram-se vários gabinetes, chamados Câmaras Negras, cujo objetivo era tanto decifrar os códigos secretos, quanto criar códigos invioláveis. Por exemplo, o código secreto criado para o Rei Luís XIV pelos seus criptoanalistas, Antoine e Bonaventure Rossigno, chamado A Grande Cifra, era tão forte que somente veio a ser decifrado no século XIX por Étienne Bazeries, criptógrafo do exército francês. Em 1518, Johannes Trithemius, monge beneditino que viveu na Alemanha, publicou o primeiro livro sobre criptografia intitulado Poligraphia, em que abordava o emprego de cifras por substituição.
Poligraphia Em 1556, o médico e matemático italiano Girolamo Cardano inventou um dispositivo para uso de cifras, conhecido como a grade de Cardano. Basicamente, o dispositivo consistia de um gabarito provido com vários furos, que eram numerados aleatoriamente e correspondiam ao número de letras na mensagem secreta. Para enviar a mensagem, a grade é posicionada sobre o papel, e as suas letras são impressas através de cada furo, obedecendo a ordem em que foram numeradas no gabarito. Para a decodificação, basta se colocar sobre o papel uma grade semelhante e ler as letras reveladas através dos furos. Em 1565 o matemático napolitano Giovanni Battista Porta, ou Giambattista della Porta, publicou o livro De Furtivis Literarum Notis, no qual menciona um sistema de cifras usando o princípio de substituição, em que uma letra qualquer contida na mensagem original podia ser grafada de onze maneiras diferentes. Um dos maiores aperfeiçoamentos na criptologia veio com Blaise de Vigenère, em 1586. Ele escreveu diversos livros, entre os quais (em 1585) o Traicte de Chiffres, no 70
Principalmente após a sua consolidação ou unificação política. A maioria dos países europeus já estava unificado, a partir do século XVIII. A partir daí, as guerras, antes de motivação religiosa, passaram a ter motivação política. Ou motivação comercial, a partir do século XIX.
qual descreve o emprego da cifra por autochave e a cifra por substituição. O processo consiste na seqüência de várias cifras (como as de César) com diferentes valores de deslocamento alfanumérico. A partir desse período, Renascença, a criptologia começou a ser seriamente estudada no Ocidente e, assim, diversas técnicas foram utilizadas e os antigos códigos monoalfabéticos foram, aos poucos, sendo substituídos por polialfabéticos.71 2.3 – A Criptologia no Século XIX Neste século a criptologia clássica teve um grande progresso, tanto do lado dos criptógrafos, que se empenhavam em criar códigos indecifráveis, quanto do lado dos criptoanalistas, que buscavam quebrar estes códigos. Merecem destaque: o holandês Kerckoff; o francês Etienne Bazieres;72 o alemão Kasiski.73 Em 1838, o norte-americano Samuel F.B. Morse inventou o telégrafo, e concomitantemente o código Morse, que na realidade era um processo pelo qual as letras do alfabeto são substituídas por pontos e traços. Entretanto, logo surgiu a necessidade tanto civil quanto militar de ocultar pela criptografia o texto a ser transmitido via telégrafo. 2.3.1 – Os Escritórios de Informação Durante a Guerra da Secessão nos EUA o presidente Lincoln ordenou ao agente Allan Pinkerton, dono de uma agência de investigações, que criasse um serviço oficial completo de espionagem e contra-espionagem.74 Após essa guerra, os Estados Unidos mantiveram um escritório de informações, que, entretanto, padecia da miopia dos Secretários da Guerra, que indicavam pessoas despreparadas para o comando desses escritórios. Como afirma o coronel Allison Hind, “Em 1898, contudo, a nação não estava preparada para ter um serviço secreto. Não o estava, sem dúvida, o Exército, que parecia necessitar mais dele”.
71
Esta cifra, realmente, tornou-se um método de codificação que é usado até a atualidade, em várias versões. 72 Nascido em 1846. Criptologista militar, foi um pioneiro no desenvolvimento de máquinas de codificação assistida, através do dispositivo conhecido com Cilindro de Bazieres, que uma versão melhorada do dispositivo inventado um século antes pelo americano Thomaz Jefferson. Em 1901 ele publicou a obra Lês Chiffres Secrets Dévoilés (As Cifras Secretas Reveladas). 73 Friedrich Wilhelm Kasiski. Foi oficial de infantaria prussiana. Em 1863 publicou o livro Die Geheimschriften und die Dechiffrierkuns (Escritas Secretas e a Arte da Decifração), que foi o primeiro tratado publicado sobre a decodificação de mensagens usando o princípio de cifras por substituição polialfabética e o sistema de autochave inventado por Vigenère. Kasiski é considerado o precursor da moderna análise criptográfica. 74 Às vezes, um simples tipo de código podia enganar os olhos vigilantes da contra-espionagem. Durante a Guerra da Secessão nos EUA, uma viúva, a Sra. Rose Greenhow, ou Rebel Rose, como se tornaria conhecida no mundo da espionagem. Freqüentadora dos meios diplomáticos no Norte, e sendo ela uma simpatizante do Sul, a Sra. Greenhow passava continuamente mensagens e informações essenciais para os separatistas. Ainda que vigiada de perto pelos agentes de Pinkerton, em determinada época ela fez uso de um simples código de cores, em tapeçaria. Colocando alternadamente os tapetes coloridos em sua janela, ela conseguia passar informações confidenciais, sem ser descoberta.
2.4 – A Criptologia no Século XX 2.4.1 – As Máquinas de Codificação Assistida A Guerra de 1914-1918 trouxe várias inovações no que se referia às comunicações entre as tropas. A invenção do telégrafo aumentou em muito a quantidade de informação trocada, o que demandava rapidez tanto na codificação quanto na decodificação das mensagens. Uma das formas encontradas para resolver este problema foi o emprego de processos automáticos, denominadas máquinas de codificação assistida. Um dos primeiros e mais simples conceitos de máquina de codificação assistida foi desenvolvido no século XV por Leone Battista Alberti, através do seu Disco de Cifras. O Secretário de Estado norte-americano Thomas Jefferson também desenvolveu um disco de cifras. Este consistia de 25 discos de madeira que giravam em torno de um eixo comum. A diferença para o disco de Alberti era que, em cada disco de madeira, as 26 letras do alfabeto eram gravadas de forma aleatória.
Disco de Cifras de Thomas Jefferson (1795) Este disco não chegou a ser usado, e logo foi esquecido. Apenas um século mais tarde el foi reinventado pelo criptologista francês Etienne Bazeries. Conhecido como Cilindro de Bazeries, era composto de um conjunto com cerca de 20 ou mais discos numerados, nos quais estavam gravados diferentes alfabetos codificados em suas bordas. Como eram montados em um eixo comum, os discos podiam ser reordenados nas mais variadas seqüências numéricas. Assim, cada nova seqüência definia a cifrachave do conjunto de discos. Na verdade, a única vantagem destes simples dispositivos de codificação era a velocidade. Em 1918 o polonês Arthur Scherbius desenvolveu uma máquina de codificação assistida chamada Enigma, a qual viria a ser utilizada pelo exército e marinha de guerra alemã na década de 1920 e ao longo da Segunda Guerra Mundial. Com o início da Primeira Guerra Mundial, elas foram produzidas nos mais diversos países e, a partir de 1935, atingiram um sofisticado grau de eficiência. Seu conceito básico era a codificação feita por substituição polialfabética, empregando extensas cifras-chaves e alguns milhares de séries de letras nulas.
Variavam em tamanho, peso e eficiência, sendo que alguns modelos podiam imprimir as mensagens (sendo por este motivo, os modelos mais volumosos e pesados). As mais simples tinham semelhança com uma máquina de escrever portátil. Durante a Segunda Guerra Mundial surgiram vários modelos de máquinas de codificação assistida, que usavam teletipos ligados a uma caixa de codificação automática. Uma das mais famosas foi a máquina utilizada pelos japoneses, conhecida como Purple Machine (Máquina Púrpura).75 2.4.2 – A Criptologia Norte-Americana Em 1931 o criptologista americano Herbert Osborne Yardley publicou o livro American Black Chamber, o qual foi a base para o desenvolvimento do serviço de criptanalise americano e responsável também pela decodificação do código diplomático japonês, o qual era utilizado para as negociações na Conferência Naval em Washington, em 1921. No final de década de 1940, o matemático e engenheiro eletricista norteamericano Claude Elwood Shannon tornou-se conhecido pelos seus trabalhos sobre Criptografia, circuitos digitais e Teoria Matemática da Comunicação. A estruturação da inteligência americana no trabalho de cifragem e decifragem começou quase no final da 1ª guerra mundial. Antes havia muito pouca ou nenhuma nota ou registro sobre esta área nos EUA. Em 1917, o Exército americano criou o Departamento de Cifras do Exército, que teve como missão inicial quebrar o código das mensagens interceptadas aos alemães. Em 1922 o Departamento de Guerra norte-americano fixou-se em Washington. Seu trabalho específico era o de estudar novos métodos de análise e decifração de mensagens. Foi por esta época, também, que se abordou pela primeira vez o problema das cifras produzidas por máquinas. Estas introduziram um novo conceito em cifragem, tornando muito mais complexo o trabalho dos decifradores. A partir de 1920 houve um significativo avanço com a aplicação de técnicas e métodos estatísticos na criptoanálise. Durante muitos anos, o Departamento de Inteligência da Marinha de Guerra Americana foi o único órgão a interceptar o tráfego de comunicações japonês.76 Desde 1918, o Serviço de Inteligência da Marinha acompanhava as mudanças e o desenvolvimento dos sistemas japoneses, em especial o código utilizado pela Marinha japonesa. Em 1931, a Marinha, através do Gabinete OP-20-G (o Departamento da Diretoria Naval de Comunicações) se dedicou inteiramente a decifrar os dois principais códigos japoneses: o Código Diplomático e as Comunicações Navais. Para isso, os americanos criaram um cinturão de estações de escuta e interceptação de sinais de rádio na Ásia, com bases em Xangai, Guam, Olangapo, Cavite, Manila e no Hawai. Em 1927, um esforço conjunto entre o Departamento de Estado e o Exército americano levou à criação da chamada Câmara Negra, que tinha a incubência de decodificar as mensagens entre Tóquio e a embaixada japonesa. Entretanto, no inicio de 1929, Henry Lewis Stimson, então novo Secretário de Estado do Presidente Hoover,
75 76
Esta máquina era adaptada de um modelo de máquina usado pelos alemães, a máquina Enigma. A Marinha americana tinha o seu próprio serviço de escuta e decifração na área do Pacífico.
determinou que se cortassem os fundos do departamento (o MEU-8, ou Escritório de Criptanálise do Departamento de Estado), que nesta época estava sob o seu controle.77 O Exército transferiu as atividades realizadas pelo Departamento de Estado para uma nova unidade no Departamento de Guerra, que recebeu o nome de Signal Intelligence Service, ou SIS. Uma das principais tarefas desse novo departamento foi a formação de uma nova geração de peritos em cifras e códigos, porque o pessoal anterior tinha sido dispersado. O novo grupo aproveitou os trabalhos da extinta Câmara Negra, com análises dos códigos utilizados pelos japoneses, e trabalhou para descobrir novos métodos para quebrar os novos códigos. Os Japoneses eram hábeis em quebrar os códigos e tinham um talento especial para cria-los. Em 1921, o Escritório da Inteligência Naval obteve uma cópia da Operação de Código Secreta da Marinha Imperial Japonesa – 1918. Entretanto, a decifração do chamado Red Book ficou atrasado, e só foi completado em 1926. No final de 1930 a Marinha americana descobriu que no mesmo Consulado Japonês em que já haviam "subtraído" o Red Book, era possível obter as chaves do sistema de cifragem de uso diplomático, exceto para as máquinas que utilizavam os sistemas "A" e "B". Os japoneses, que suspeitavam que os seus códigos tinham sido quebrados, introduziram um novo dispositivo eletromecânico, o Angooki Taipu A (que tinha sido chamado de Red Book pelos americanos). Esta máquina de cifragem utilizava rotores móveis que controlavam os sinais elétricos transmitidos pelo teclado ou recebidos pelo rádio.78 A introdução do Blue Book, como era conhecido o Código de Operações Navais japonês, em fevereiro de 1931, substituindo o Red Book, juntamente com o aumento no tráfego de comunicações diplomáticas criou uma imensa carga de trabalho para os criptoanalistas da Marinha. Isto forçou a Marinha a procurar dividir o trabalho com o Exército, bem como fornecer as mensagens interceptadas até que o Exército desenvolvesse sua própria capacidade em obter as mensagens. Em 1933 foi feita uma tentativa de coordenar os trabalhos entre a Marinha e o Exército. A Marinha, que não desejava delegar todas as comunicações diplomáticas, propôs ao exército que cuidasse das comunicações de rádio no âmbito do Exército e todos os códigos diplomáticos, exceto os das quatro maiores potências navais (Inglaterra, França, Itália e Japão). Este acordo, segundo estimava a Marinha, poderia reduzir em dois anos o tempo necessário para quebrar o novo código Blue Book japonês. Houve dificuldades imprevistas para que acontecesse um acordo de cooperação, que quase entrou em colapso quando o Departamento de Estado rejeitou a proposta do exército de interceptar as comunicações diplomáticas. Com a aproximação da solução do Blue Book, muito trabalho ainda restava para definir as áreas de interesse de cada 77
Em várias ocasiões da História a miopia dos responsáveis pela segurança de seus países foi contra o inestimável conselho de Sun-Tzu (general chinês, autor de um tratado de estratégia militar escrito por volta do século IV a.C): “Nada deve ser mais estimado do que a informação, mais bem pago do que a informação, e nada deve ser mais confidencial do que o trabalho de coleta de informações”. A prova mais contundente da atitude absurda de Stimson foi a ingênua declaração que ele fez posteriormente em sua autobiografia para se justificar: "cavalheiros não lêem a correspondência alheia". 78 Entre 1924 e 1940 os criptoanalistas americanos adotaram um sistema de designação por cores para os sistemas criptográficos japoneses de alto nível. A máquina de cifrar do corpo diplomático japonês foi designado por Red(vermelho) para a máquina tipo "A" e em 1939 Purple (púrpura) para o novo modelo "B" que o substituiu em muitas das embaixadas. A partir de 1939, uma máquina suplementar de cifrar passou a ser utilizado pela marinha japonesa até 1945 e foi designada pelo codinome Coral pelos americanos. O principal código utilizado pela Marinha japonesa recebeu o codinome Red até 1938, e Black até 1940, quando a designação foi alterada para JN-25 (Japanese Navy 25).
corporação. Em 1933 uma comissão conjunta, com a presença do General Douglas MacArthur, recomendou ao Secretário de Guerra o estabelecimento de dezenove comitês conjuntos para acelerar a integração dos sistemas de inteligência do Exército e da Marinha. Infelizmente, apesar do recomeço dos trabalhos de criptoanálise e da existência dos comitês, a Marinha não chegou a um consenso junto ao Exército. No final de outubro de 1938, a marinha japonesa trocou o seu código de cifras. O antigo código, chamado Blue Book (Livro Azul), que vinha sendo usado desde 1931, foi trocado por um novo código que recebeu o nome de Black Code (Código Negro). O Código Negro expandido foi o objetivo principal do posto de criptoanálise no Hawai, até meados de dezembro de 1941. Códigos adicionais introduzidos em 1939 aumentaram a complexidade do Código Negro. Ele nunca foi quebrado, mas foi utilizado de maneira limitada. Um tipo de cifra em particular, de cinco dígitos, utilizado pela Marinha japonesa, recebeu a designação de JN-25 pelos criptógrafos da Marinha americana. O Código JN-25 utilizava três livros, um Livro de Códigos, um Livro de Números Aleatórios (chamado de Livro Aditivo) e um Livro de Instruções. O Livro de Códigos continha cerca de 30.000 números de cinco dígitos, os quais representavam caracteres Katakana, números, nome de lugares e mais uma porção de outras coisas. A chave deste sistema era o resultado da adição dos dígitos de um grupo, que deveria sempre resultar em um número divisível por 3. O Livro dos Números Aleatórios continha 30 páginas, cada uma com 100 números colocados em uma matriz de 10x10. Estes números, usados como aditivos, eram somados em módulo a um grupo de números, dígito por dígito (sem “transporte”), cifrando assim os números originais. O Livro de Instruções continha as regras para usar as cifras não seqüenciais. O número de cada página e o número da linha de cada página onde a seleção de números aditivos começava servia como chave, a qual era incluída no inicio e no fim de cada mensagem. O código resultante foi um dos mais utilizados e distribuídos de todo o sistema de criptografia do Japão. Em meados de 1940 os serviços de inteligência americana conseguiram a posse do Código Púrpura.79 Após um extenso trabalho de deciframento, esse código pôde ser lido parcialmente. O código japonês foi quebrado pela equipe de Inteligência do Corpo de Sinaleiros do Exército Americano dirigido por Frank Rowlett. O novo sistema de cifras japonês passou a ser utilizado a partir de 1939, mas os criptoanalistas americanos e ingleses já tinham quebrado uma boa parte do código, antes do ataque à base naval americana de Pearl Harbor, no Hawai. Além disso, conseguiu-se também construir máquinas similares à utilizadas pelos japoneses na transmissão das mensagens Púrpura. As máquinas Púrpura construídas foram distribuídas, uma para Londres, uma para o Serviço de Inteligência do Departamento da Marinha e outras duas foram destinadas ao Serviço de Inteligência de Comunicações do Departamento de Guerra. Uma última máquina foi enviada em abril de 1941 para as ilhas Filipinas, para ser utilizada pelo comandante da Frota Asiática e pelo General MacArthur. Após isso, 79
Púrpura foi o nome usado pelos militares americanos para identificar o sistema criptográfico utilizado pelo Serviço Diplomático japonês antes e durante a Segunda Guerra Mundial. Este não era o nome do código em si, mas da máquina eletromecânica de cifras. A Máquina Púrpura foi a evolução e a sucessora de dois equipamentos anteriormente utilizados, a Máquina Vermelha e a Máquina M, que foram utilizadas em algumas embaixadas e consulados do Japão.
foram organizados em Washington os serviços para a intercepção e deciframento das mensagens japonesas,80 sendo que os informes obtidos receberam o nome-chave de Magia (Magic),81 termo pelo qual era conhecido dentro do governo americano. Como nenhuma máquina Púrpura foi instalada na base de Pearl Harbor, sede do comando da frota do Pacífico, o chefe dessa frota,. Almirante Kimmel, ficou dependente de Washington, no que se referia à recepção dos informes japoneses interceptados. As mensagens Magia decifradas pela Marinha e pelo Exército eram classificadas no mais alto grau, e somente poucas pessoas tinham acesso a elas. Entre estas estavam o Presidente Roosevelt, o Secretário de Estado Cordell Hull, o Secretário de Guerra Stimson, o Secretário da Marinha Knox, o general Marshall, chefe do Estado-Maior do Exército, o Almirante Stark, chefe de operações navais, e outras sete autoridades navais e militares de alta graduação.82
A máquina Púrpura Usando uma máquina de cartões da IBM e novas técnicas analíticas, em dezembro de 1940 os criptoanalistas conseguiram montar o Livro de números aditivo, dois sistemas de chaves e o um grupo de códigos para os números de 000 até 999. Entretanto, a falta de pessoal disponível dificultava a leitura completa do JN-25. O motivo é que se decidiu que a prioridade era o código diplomático. Em 1º. de dezembro de 1940 o Japão cancelou o Código A, que vinha sendo usado desde 1º. de junho de 1939. Esta ação frustrou a expectativa de solucionar totalmente o código até 1º. de janeiro de 1941. Um novo código foi denominado JN-25 B (Baker) e tinha propriedades diferentes na geração de chaves, além de possuir um novo e maior livro de códigos aditivo. Pelos próximos dois meses, até 31 de janeiro de 80
O tráfego de mensagens japonesas subiu 1.200% entre 1930 e 1935, continuando a crescer em número de sistemas e volume. No final de 1942, a Marinha de Guerra Japonesa empregava 14 diferentes tipos de sistema de cifragem, o que gerava mais de 40.000 mensagens por ano, sem contar as mensagens obtidas do sistema de "Uso Geral", que em novembro de 1941 alcançava cerca de 7.000 mensagens por mês. 81 Estas intercepções tornaram-se um parte do Ultra, que era o nome do projeto completo de inteligência utilizado contra as comunicações codificadas inimigas. 82 Como uma teoria histórica não provada, foi aventado que o governo norte-americano sabia que a base seria atacada. Nenhuma providência foi tomada, contudo, porque somente assim os EUA entrariam na guerra, fato desejado pelos ingleses mas que sofria absoluta rejeição pelo povo norte-americano. A indignação provocada pelo ataque japonês fez com que a opinião pública tomasse um rumo contrário, favorável à guerra.
1941, muitas das mensagens interceptadas ainda empregavam o código aditivo da versão A (Able), o que permitia acompanhar parcialmente o tráfego de rádio. Centenas de mensagens interceptadas, baseadas no JN-25, não foram analisados devido à falta de pessoal suficiente. Assim, a maioria delas permaneceu desconhecida.83 A Cifra JN-25 só foi praticamente quebrada em janeiro de 1942, e a leitura das mensagens secretas impediu o avanço japonês através do Pacífico.84 O grupo responsável por este feito de criptoanálise foi a unidade de inteligência baseada no 14º Distrito Naval em Pearl Harbor, coordenada por John Rochefort. Quebrar o código JN-25 exigiu duas coisas: quebrar o esquema de cifras e, em seguida, descobrir as chaves externas. Como os japoneses não trocavam os livros de código senão em período de meses, isto permitiu que um esquema de cifras fosse utilizado freqüentemente. Com o tempo, os criptoanalistas americanos montaram uma tabela de cifras; se uma fonte era identificada, era usada como índice para a engenharia reversa da tabela de cifras, permitindo a decifração do resto da mensagem. Assim que os criptoanalistas desvendaram o esquema de cifras que escondia o código de valores, eles começaram a construir um dicionário de valores de código a partir do contexto e das deduções. Por exemplo, sinais interceptados, combinados com a localização da emissão de rádio permitiam ligar um navio específico ou o local, a quem o estava enviando. O conteúdo das comunicações militares era também de grande ajuda para a dedução. Mensagens podiam começar com o nome do navio de onde era transmitida e, algumas vezes, o nome do comandante do navio. A mensagem, algumas vezes, incluía a data e a hora e muitas vezes as coordenadas do navio, o que podia ser comprovado através do aparelho localizador de emissão de rádio. Uma das mais espetaculares ações militares feita durante a guerra, só tornada possível graças a interceptação e a quebra das mensagens cifradas japonesas, foi a cilada aérea construída contra o Almirante japonês Isoroku Yamamoto, que resultou em sua morte. O almirante Yamamoto foi o responsável pela organização do ataque-surpresa a Pearl Harbor em 7 de dezembro de 1941, forçando os EUA a entrar na Segunda Guerra Mundial. Devido à derrota na batalha de Midway em junho de 1942 (derrota devida à leitura das mensagens japonesas), ele foi obrigado a reagrupar as suas forças. Em abril de 1943 ele decidiu fazer uma rápida visita de inspeção nas bases situadas nas Ilhas Salomão. Como era bastante meticuloso, enviou os detalhes do seu itinerário em uma mensagem que foi interceptada e decodificada pelo Serviço de Inteligência americano.
83
Após a guerra, descobriu-se a importância dessas mensagens. Elas continham detalhes a respeito da Primeira Frota Aérea da Marinha japonesa, a força que atacou Pearl Harbor. 84 A partir de abril de 1942, cerca de um terço das mensagens já podia ser quebrada e lida. Ver: http://www.grandesguerras.com.br/artigos/text01.php?art_id=162.
Ilustração do ataque a Yamamoto Após muita discussão dentro do Alto Comando Militar americano, o Almirante Chester Nimitz autorizou uma emboscada aérea (conhecida como Operação Vingança). Às 07:44h do dia 18 de abril de 1943, o avião que conduzia o almirante Yamamoto foi abatido perto de Bougainville por uma esquadrilha de caças P-38, os quais haviam decolado da base do Campo Handerson, a cerca de 640 km de distância. O grupo de Rochefort quebrou também os códigos (Código Maru) utilizados pela marinha mercante japonesa, cujos navios passaram a ser um alvo fácil para os submarinos e bombardeiros americanos. Os criptógrafos americanos decifraram e traduziram catorze partes da mensagem diplomática japonesa que declarava guerra contra os Estados Unidos, antes mesmo que a embaixada americana em Washington recebesse a comunicação oficial. Entretanto, os japoneses eram muito cuidadosos e não mencionavam operações militares nas mensagens trocadas no âmbito da embaixada. Ainda assim, a capacidade de ler o Código Púrpura deu aos aliados uma grande vantagem na guerra. O Código Púrpura e as mensagens japonesas foram objeto de investigação pelo Congresso Americano logo após a Segunda Guerra Mundial, na tentativa de apontar o responsável pelo desastre militar na base aeronaval de Pearl Harbor. Foi durante estas audiências que japoneses descobriram que os seus códigos diplomáticos tinham sido quebrados. No calor das batalhas, a necessidade de rápidas comunicações cifradas por rádio esbarravam na habilidade japonesa em quebrar as cifras americanas. Mas houve um código que jamais foi quebrado pelos japoneses. Na batalha de Saipan, os americanos usaram a comunicação verbal entre navajos de um modo codificado. Soldados navajos eram treinados para se comunicarem em seu próprio idioma, e eles o faziam sem serem interpretados pelos japoneses. Os mensageiros de código navajo criaram cerca de 450 palavras que representavam termos militares, e a complexidade do código, além de deixar os japoneses perplexos, jamais foi quebrada.
2.4.3 – Criptologia Norte-Americana do Pós-Guerra Os americanos continuaram a aprimorar a segurança de seus próprios códigos durante e após a guerra. Uma máquina de cifras denominada Sigaba85 (também designada pelo código ECM Mark II , Conversor M-134; ou CSP-888/889, pela Marinha) foi desenvolvida ainda durante a guerra para operação pelo Exército e Marinha americana. Assim com a máquina Enigma, ela consistia de um sistema eletromecânico de rotores para a codificação das mensagens. Tinha, no entanto, várias vantagens sobre a máquina usada pela Alemanha: enquanto que esta usava somente três rotores, a Sigaba usava 15. Além disso, enquanto que os rotores da primeira moviam-se como um velocímetro, a Sigaba usava um invento do tenente Joseph N. Wenger chamado stepping maze. Este dispositivo tornava aleatório o movimento dos rotores; após cada letra, podiam mover-se entre um e quatro rotores.
A Máquina de Cifras SIGABA Mantida sob estritas normas de vigilância, foram fabricadas dez mil unidades, que só podiam ser usadas por forças americanas (mas não pelos Aliados). Os alemães a chamavam de Big Machine. Foi mantida em operação até 1959, quando foi retirada de serviço, por ser muito lenta; neste período, jamais teve o seu código quebrado.86 Com exceção de algumas poucas unidades, todas as máquinas foram sistematicamente destruídas. As seis que restaram permanecem nas mãos da Agência de Segurança Nacional (National Security Agency – NSA). A chamada Linha Vermelha entre Moscou e Washington, estabelecida em 1963 após a crise dos mísseis de Cuba, usava teleimpressoras protegidas por um sistema onetime de fita. Cada fita usada para codificar as mensagens87 foi preparada por cada país, EUA e URSS, fechadas à chave e entregues via diplomática ao outro país. 85
Para uma explicação do funcionamente da máquina de cifras Sigaba e a sua criptoanálise , ver: http://www.sjsu.edu/mscs/research/projects/chan_wing-on.pdf. 86 Atualmente, o seu uso seria considerado extremamente inseguro, porque as suas cifras poderiam ser facilmente quebradas em pouco tempo por um moderno super-computador (mas não por um computador doméstico). 87 Os sistemas on-time de fita era conhecidos como Sigtote e 5-Uco, posteriormente substituídos pela cifra eletrônica KW-26.
Começando durante a Segunda Guerra Mundial, em 1946, e ativo ao longo das décadas seguintes da Guerra Fria, as comunicações soviéticas usando OTP podiam ser lidas por causa do chamado Projeto Venona, um projeto super-secreto conduzido por americanos e ingleses.88 Isto permitiu que os espiões ingleses e americanos a soldo da União Soviética fossem quase todos desmascarados. Alguns dos chamados espiõesatômicos conseguiram fugir antes que fossem pegos; quanto ao casal Rosenberg, levados à cadeira elétrica, e que protestaram sua inocência até o fim, só tiveram a sua culpa comprovada quando o Venona se tornou público em 1995.89 2.4.4 – A Criptologia Alemã Nazista A quebra de códigos pelos alemães ao longo da Segunda Guerra Mundial só foi não foi melhor sucedida devido ao fato de que existiam múltiplos (cerca de doze) departamentos que trabalhavam sem coordenação ou cooperação entre si, o que multiplicava os esforços, muitas vezes sem resultado. Não havia um órgão central, do tipo da britânica Bletchley Park. Uma das principais e mais competentes organizações alemãs de criptoanálise era a B-Diens (Beobachtungsdienst)90, um departamento naval. Criada em 1930, entre 1935 e 1939 já havia quebrado as cifras usadas pela Marinha Britânica de modo tal que conhecia a posição de todos os navios ingleses, quando do início da guerra.91 A unidade B-Diens quebrou a British Naval Cypher No. 3, o que ajudou a Alemanha na Batalha do Atlântico, até que o Almirantado inglês introduzisse a Naval Cypher No. 5 em 10 de junho de 1943.92 Quebrou também várias cifras da marinha mercante inglesa, e em 1942 podia acompanhar toda a comunicação dos Aliados com os seus comboios. Antes que os Estados Unidos entrassem na guerra, a B-Diens podia ler todos os seus códigos. Com a recusa americana em equipar os navios ingleses com a sua ECM Mk.1, o Almirantado inglês usou a Naval Cypher No. 3, que logo foi quebrada pelo BDiens. Entre dezembro de 1942 e maio de 1943, 80% das mensagens interceptadas por rádio foram lidas pelos alemães. Entretanto, o tempo levada na desencriptação tornava quase inútil a utilidade destas mensagens; apenas cerca de 10% eram lidas em tempo hábil necessário para uma ação efetiva. Os códigos soviético e dinamarquês foram também quebrados. Uma outra unidade alemã, a Reichspost, conseguiu desembaralhar as transmissões de rádio entre os EUA e a Grã-Bretanha,93 através de uma estação de 88
Era tão secreto que nem os presidentes Roosevelt e Truman o conheciam. O julgamento contra eles não pode usar as provas conseguidas pela Inteligência, para não revelar o fato de que os EUA conheciam as cifras secretas soviéticas (e tinham os seus próprios espiões em solo russo). Quando se tornou público, o Venona serviu para recuperar a imagem do senador norte-americano Joseph McCarthy, que iniciou (nos anos 1950) uma investigação no Congresso a respeito da infiltração comunista-soviética na sociedade americana. Atacado pela imprensa e por liberais, que arruinaram a sua reputação, os documentos Venona viriam a lhe dar razão. 90 Serviço de Vigilância. Ver: http://www.freerepublic.com/focus/fr/935929/posts. Ver também: http://en.wikipedia.org/wiki/Venona_project. 91 Havia também a xB-Dienst (Serviço de Criptoanálise), que era habilidosa em quebrar as comunicações efetuadas por rádio, pelos Aliados. 92 Tradicionalmente, os ingleses eram lentos em trocar os seus códigos. Talvez por isto tenham sido quebrados todos os códigos de baixo nível usados pela Marinha e pela Força Aérea, tais como Cofox, Medox, Foxo, Loxo, Syko. A máquina de cifrar americana Hagelin (usada em campo) e o código francês Anglp também eram lidos regularmente pelos alemães. 93 As transmissões usavam um scrambler de voz Sigsaly, que era um sistema one-time pad. Ele adicionava ruído ao sinal, o qual era removido na recepção. 89
monitoramente construída em Noordwijk, na Holanda ocupada. Mesmo conversações telefônicas sigilosas entre o Presidente Roosevelt e o Primeiro-Ministro inglês Winston Churchill eram interceptadas e compreendidas. A partir de 1943, com o uso de códigos mais fortes, as mensagens dos Aliados não puderam mais ser quebradas pelos alemães. 2.4.4.1 – A Máquina Enigma A Segunda Guerra Mundial trouxe um dos maiores desafios aos criptoanalistas em geral. As ofensivas alemãs, de um modo geral, tinham suas mensagens secretas protegidas pela famosa máquina de encriptação conhecida como Enigma. Em 1918 o alemão Arthur Scherbius inventou uma máquina de criptografia conhecida como Máquina Enigma. A partir de 1925 o exército alemão, que procurava um sistema de cifras seguro, concluiu que esta máquina servia aos seus propósitos, e em 1928 começou a usar uma versão dela, a Enigma G,94 que tinha como garantidor de segurança a troca periódica mensal de suas chaves. Essa máquina era elétrico-mecânica e incialmente possuía três rotores, evoluindo depois para um modelo de oito rotores. Sua aparência era a de uma máquina de escrever, mas quando o usuário pressionava uma tecla, o rotor da esquerda avançava uma posição, provocando a rotação dos demais rotores à direita, sendo que esse movimento gerava diferentes combinações.
Versões da máquina Enigma A Máquina Enigma ou Máquina de Cifra ou Máquina de Codificação Assistida utilizada ao longo da guerra era um modelo eletro-mecânico que usava um sistema polialfabético de 26 caracteres, no qual uma série de rotores encadeados (cada um contendo 26 letras) introduzia uma imensa quantidade de possibilidades a cada codificação, tornando quase impossível o processo de desencriptação. Os caracteres iam sendo codificados à medida que as letras do texto claro eram digitadas no teclado; cada rotor tinha 26 contatos elétricos que giravam em 1/26 avos a cada passo, a cada digitação, modificando a configuração interna. 94
Até 1945 chegaram a ser vendidas 30.000 unidades para as forças armadas alemãs. Uma versão ligeiramente diferente foi fornecida para os japoneses, que a usaram para construir a sua Máquina Púrpura.
A cada salto, cada rotor ia fazendo com que os rotores seguintes se movimentassem. Havia máquinas com quatro cinco ou até seis rotores, o que dava, respectivamente, 264 (456.976), 265 (11.881.376) ou 266 (8.031.810.176) possibilidades de codificação, antes que a configuração inicial fosse repetida. Era baseada em um sistema de chaves, ou Livro de Códigos, cujas cópias deviam ser distribuídas em imensa quantidade para os diversos comandos nas várias regiões de conflito. Para dificultar qualquer processo de tentativa de desencriptação os rotores podiam ser intercambiados entre si, o que, junto com a mudança constante das chaves, dificultava sobremaneira a tarefa dos criptoanalistas. Posteriormente surgiram outras máquinas semelhantes à Enigma, mas aperfeiçoadas de forma a dificultar o mais possível a desencriptação. A máquina Enigma, apesar de sua aparência inexpugnável, teve suas cifras quebradas pelo notável matemático inglês Alan Turing.95 2.4.5 – A Criptologia Inglesa Durante a Primeira Guerra Mundial o escritório de criptoanálise na Inglaterra era conhecido como Sala 40, por se encontrar na sala 40 de Whitehall, Londres, onde se situava o Ministério da Guerra. Nela agrupavam-se os maiores especialistas em decifração, comandados pelo Almirante William Reginald Hall. A Sala 40 foi responsável pela quebra, entre outros, do código utilizado pela marinha alemã ao longo da Primeira Guerra Mundial. Foi nesse período que teve início um intensivo processo de escuta de mensagens transmitidas pelo rádio (de invenção muito recente).96 Na década de 1920 o governo britânico procurava por uma Cifra que substituísse o seu sistema de códigos, considerado lento e inseguro. Em 1926, foi formado um Comitê inter-governamental para esta finalidade. A sugestão do Brigadeiro O. G. W. Lywood de adaptar a máquina Enigma97 adicionando uma unidade impressora foi ignorada na época, sendo levada em conta apenas em 1934. Em agosto de 1934 surgiu o primeiro protótipo de uma máquina codificadora, a Typex Mark I 98 Por volta de 1937 já havia cerca de 30 máquinas em operação. A Typex era baseada na máquina comercial Enigma que incorporava um número de características a mais, para aumentar a segurança. Por exemplo, tinha cinco rotores (contra três ou quatro na Enigma), sendo que os dois primeiros ficavam estacionários, embora pudessem ser acionados à mão. Os rotores continham múltiplos entalhes que poderiam eventualmente acionar os rotores vizinhos.
95
Singh apresenta em sua obra uma descrição bastante adequada de como foi realizado o processo de quebra da Cifra Enigma. 96 Calcula-se que durante a Primeira Guerra Mundial foram transmitidas cerca de dois milhões de palavras por mês, valor este que se tornou diário, ao longo da Segunda Guerra Mundial. 97 Que tinha um modelo cormercial à venda. 98 Alternativamente: Typex; Type X; TypeX.
Typex Mark II Em 1938 foi aprovada uma máquina de cifras mais aperfeiçoada, a Typex Mark II (da qual foram construídas 350 unidades), que incorporava duas impressoras, uma para o texto plano e outra para o texto cifrado. A máquina foi adotada pela marinha e pelo exército inglês, bem como por departamentos do governo. Devido às dimensões e ao peso do modelo MK II, foi desenvolvida a Typex Mark III, menor, embora mais lenta na velocidade de letras por minuto (60, contra 300 letras por minuto da MK II).
Typex Mark III Em 1941 foi desenvolvido um modelo de máquina cifradora, a Combined Cipher Machine – CCM, que começou a ser usada pela Marinha Real em novembro de 1943. A CCM foi implementada a partir de modificações feitas na Typex e ECM Mark II Americana; elas eram, portanto, inter-operáveis.99 A Typex, em todas as suas versões, tinha várias vantagens sobre a máquina Enigma: • exigia apenas um operador, contra dois da Enigma; • usavam teleimpressoras (opcional, no caso da Typex II);100 • o processo de codificação/decodificação era mais simples e mais rápido nas Typex; 99
Embora os britânicos tivessem passado os dados da máquinas Typex para os americanos, estes jamais permitiram que aqueles conhecessem profundamente a máquina ECM, considerada mais avançada. 100 As máquinas teleimpressoras alemãs equivalentes a eram a Lorenz SZ 40 e a Siemens e Halske T52 usando Cifras Fish.
•
as mensagens eram menos sujeitas a erros, nas Typex.
Posteriormente os ingleses desenvolveram a Typex Mark VI, a Typex Mark VIII (esta era uma Mark II com um perfurador Morse), a Typex 22 e a Typex 23. Esta última era uma Typex 22, modificada de forma a poder trabalhar com a Combined Cypher Machine – CCM.
Typex 23 Um modelo de Typex sem rotores foi capturada pelos alemães durante a Batalha da França, e mais de uma unidade criptoanalítica alemã tentou quebrar a sua cifra. Como a unidade tinha sete rotores, foi declarado que a máquina era mais segura do que a Enigma, e portanto, inquebrável. Com isso, cessaram as tentativas neste sentido. A Mark 23 e a Mark 22 foram modificadas para serem usadas junto com a CCM. As máquinas Typex continuaram a ser usadas até os anos 1970. Na Nova Zelândia, a Mark II e a Mark III foram substituidas pela Mark 22 e Mark 23 em Janeiro de 1950; o seu uso foi descontinuado em 1973. As operações especias britânicas usaram as one-time pads para codificar o tráfego entre seus escritórios. As máquinas one-time incluíam as Rockex e Noreen.
CAPÍTULO III FUNDAMENTOS DA CRIPTOANÁLISE CLÁSSICA 3.0 – Criptografia Tática e Criptografia Estratégica De acordo com Sgarro, o objetivo da criptografia tática é o de manter indecifradas as mensagens por um curto período, apenas o suficiente para que ocorram fatos as curto prazo. Neste caso, mesmo que sejam decifradas, e desde que não o sejam rapidamente, as mensagens terão valor apenas tático e imediato, sem valor para o presente e o futuro. A criptografia tática tem, então, valor apenas imediato. Já a criptografia estratégica deve garantir o segredo das mensagens cifradas por um período extenso, o maior possível. Se as chaves desse tipo de criptografia são quebradas pelo inimigo, isto trará conseqüências e prejuízos irreparáveis. Dessa maneira, a criptografia estratégica tem maior atenção tanto do criptógrafo quanto do criptoanalista. Atualmente, a criptografia estratégica não abrange apenas os campos político e militar, pois invadiu outras áreas, comerciais, industriais, de pesquisa, etc., mas cuja importância estratégica exige que sejam usados métodos seguros de criptografia. O famoso criptólogo holandês do século XIX, Auguste Kerckhoffs von Nieuwenhof (1835-1903), emitiu um importante princípio até hoje seguido: A segurança de um sistema estratégico é confiada inteiramente, ou pelo menos essencialmente, ao segredo da chave.101 Ou seja, se o inimigo descobre o método de cifragem, isto não garante que a chave possa ser descoberta.102 Para Kerckhoffs, a segurança do sistema repousa no sistema de chaves, e ele diz que os amadores tendem a crer que um número muito grande de chaves aumenta esta segurança.103 De todo modo, os sistemas criptográficos devem repousar, com toda certeza, na segurança da chave, que, no caso de chave fixa, é a menos segura.104 Quanto ao criptoanalista, a sua tarefa é exatamente esta: quebrar a chave e decifrar a mensagem.105 Para isto, ele dispõe dos métodos oferecidos pela ciência. 3.1 – A Lingüística e a Teoria da Informação A linguagem escrita, em qualquer idioma moderno, repousa em um conjunto de caracteres que constituem o alfabeto desta língua. 101
Kerckhoffs é autor da obra sobre criptografia militar, La Criptographie Militaire. Quando o inimigo consegue se apoderar de uma máquina de cifragem, esta tática facilita em muito a descoberta das chaves utilizadas. 103 Ele afirmava que apenas os especialistas podem opinar acerca da segurança de um sistema de criptografia. Entretanto, mesmo os profissionais podem ser vítimas de ilusão: o século XIX mostrou uma intensa rivalidade entre criptólogos – o próprio Kerckhoffs, os franceses Étienne Bazeries e Gaëtan de Viaris – que quebravam mutuamente os códigos “inquebráveis” dos rivais. 104 Os cifrários de chave fixa são denominados cifrários degenerados. 105 Se o criptoanalista dispõe tanto da mensagem quanto do criptograma, e quer compreender qual foi o cifrário e qual a chave utilizados, esta situação é chamada de ataque com texto claro. Na verdade, este é o método que os lingüistas utilizam para a decifração das línguas mortas. 102
A linguagem escrita pode ser dividida (de um modo simplificado) em sistema incompleto e sistema completo. Sistema incompleto: é caracterizado pela linguagem chamada pictórica, pictográfica ou hieroglífica. Nele, as idéias são simbolizadas por cenas ou figuras estilizadas, e não tem nenhuma relação com a linguagem oral. Os caracteres representam, em sua maior, parte, os sons distintos. Sistema completo: classifica as linguagens em três tipos: ideográfica; silábica; alfabético/fonética ou alfabético/fonológica. • Ideográfica: em que se usam ideogramas que representam coisas ou idéias completas. É escrita com centenas ou milhares de caracteres (cerca de cinco mil, no idioma chinês básico); • Silábica: sistema de escrita no qual cada símbolo é a combinação de sons de consoantes e vogais que representam uma sílaba (silabismo). Escritas silábicas costumam ter entre 50 a 100 caracteres silábicos. • Alfabético/fonética: em que se busca uma aproximação entre um signo e um som (característica dos idiomas modernos); • Alfabético/fonológica: em que há uma estrita correspondência entre o signo e o som. Está mais próxima da linguagem oral, em qualquer idioma. Escritas puramente alfabéticas costumam ter entre 20 e 40 caracteres (o idioma russo tem 36; o idioma arábico tem 28). De acordo com Berlitz106, existem cerca de 400 sistemas de escrita no mundo, antigos e modernos, e os alfabetos, incluindo as variações de letras, baseiam-se, em média, em 28 sinais em caracteres latinos, cirílicos, hebraicos, gregos, romanos, etc (não consideradas as escritas cursivas, como o árabe, por exemplo). No alfabeto japonês, a escrita é formada em parte com caracteres ou ideogramas chineses (a escrita kanji), em parte com uma escrita silábica simplificada chamada escrita hiragana (usada em terminações verbais e quando os caracteres chineses não são empregados) e um escrita angulosa, o alfabeto silábico katakana, usado para escrever palavras e nomes estrangeiros. No alfabeto coreano, os ideogramas chineses foram substituídos por um alfabeto silábico simplificado, constituído de 14 consoantes e dez vogais. O idioma chinês é escrito atualmente com cerca de seis mil caracteres ou ideogramas;107 embora haja várias línguas faladas (entre elas o mandarim e o cantonês), elas são mutuamente compreensíveis através da linguagem escrita. Nessa, cada sílaba pode ter quatro tons, sendo que algumas delas podem ter 50 significados diferentes. Além disso, uma mesma pronúncia pode corresponder a caracteres ideográficos (escritos) diferentes, que conduzem a idéias diferentes. 3.1.1 – Significante e Significado Um texto literário em qualquer idioma constitui um conjunto de signos e relações entre signos, que lhe dão um significado. O texto, redigido conforme um conjunto de regras de gramática e de sintaxe, possui uma estrutura significante, ou seja, o texto deve fazer sentido, para o leitor.108 Assim, além das características 106
BERLITZ, 1988, p. 112. Na época das grandes dinastias, os caracteres da língua chinesa somavam cerca de 50 mil ideogramas. 108 Mesmo textos tão densos e inextricáveis como as obras de James Joyce (Ulisses e Finnegans Wake), ou mesmo a desconhecida Hypnerotomachia Poliphili , devem possuir um significado intrínseco que 107
“construtivas”, o texto (pelo menos o texto literário) deve possuir, necessariamente um significado. A criptoanálise tem por objetivo decifrar um texto cifrado cuja mensagem original, ou mensagem clara, repousa em um idioma falado, que, por sua vez, tem uma correspondência com signos escritos que possuem significado. Isto significa que, uma vez decifrado o código, a mensagem pode ser lida, sem qualquer problema de interpretação, pelo destinatário (ou seja, a mensagem faz sentido, porque possui um significado, para o seu destinatário legítimo). Por outro lado, o texto ou mensagem cifrada, não deve fazer sentido para quem não pode decodificá-lo. Mas aquele que a intercepta, naturalmente, tem todo interesse em realizar a sua leitura, para o que apelará para todos os recursos disponíveis. Este recursos, atualmente, são oferecidos pela Teoria da Informação, pela Linguistica, pela Informática, pela Lógica, etc. De acordo com Kondratov, ... a teoria da informação permite encontrar a quantidade de informação contida em mensagens compostas de sinais de códigos tão equiprováveis quanto de probabilidades diferentes. Toda língua constitui exatamente um ‘código de probabilidades’.109 Em qualquer idioma, existem consoantes e vogais110 formativas das palavras, e as estruturas rígidas do idioma obrigam a que tais signos se sucedam conforme uma ordem necessária, que resulta da formação histórica do idioma. Assim, a maioria das palavras possui sufixos em abundância, de duas (dígrafos ou digramas), três (trígrafos ou trigramas) ou mesmo quatro letras (quadrígrafo ou quadrigrama). É esta característica que permite a formação de tabelas de freqüências de letras e n-gramas dos idiomas mais conhecidos (e até dos menos falados).111 3.1.2 – Tabelas de Frequências A seguir, serão mostradas as tabelas estatísticas das letras mais freqüentes, digramas, trigramas, letra individual mais freqüente e percentual de vogais de alguns dos idiomas mais falados no mundo:112
possa ser decodificado em uma leitura, ainda que essa leitura seja “difícil”. É evidente que a “leitura” depende do nível de educação do leitor, e de sua capacidade de semanálise (cf. Julia Kristeva). 109 KONDRATOV, 1972, p. 39. 110 Nos idiomas em que as vogais não costumam ser escritas, não significa que elas não existam. No hebraico moderno, por exemplo, costuma-se acrescentar sinais diacríticos chamados sinais massoréticos (ou Nekudot – niqqud, no singular) para indicar a sua pronúncia. 111 Uma das fontes mais conhecidas e utilizadas para pesquisas, do idioma inglês (e cuja metodologia serviu de base para pesquisa de outros idiomas), é o chamado Corpus Brown, elaborado pela Universidade Brown, dos EUA. Ver: http://en.wikipedia.org/wiki/Brown_Corpus [Corpus: uma vasta coleção de obras literárias em vários gêneros e estilos, cujo conteúdo (as palavras utilizadas) sejam representativas do idioma inglês]. 112 A Estatística Lingüística foi uma das novas ciências que veio em socorro dos criptoanalistas, os quais se servem generosamente das tabelas de distribuição estatística. Nas tabelas, os digramas e trigramas não estão em ordem de frequência.
Inglês: ETAOINSRHLDCUMFPGWYBVKXJQZ Digramas: AN AS AT BE BY CH DO EA ED EE EN ES ER GH GU HE IF IN IS IT ME MY NT OF OO ON OR OW PH QU RE SH SO ST TO TH TT UP WE WH Trigramas: AND FOR ENT EST FOR HAS HIS ION NDE THE THA TIO Letra mais frequente: E (12%) Percentual das vogais: 40% Índice de frequência das letras:113
O gráfico a seguir mostra a distribuição de freqüências de letras do idioma inglês. As letras mais freqüentes são a letra e, t, a, o, n, i e as letras menos freqüentes, as letras z, j, q, x.
113
Os números entre parênteses representam um Corpus menos extenso que o anterior.
Francês: ENASRIUTOLDCMPVFBGXHQYZJKW Digramas: ES EN OU DE NT TE ON SE AI IT LE ET ME ER EM GN LL EU QU GU Trigramas: AIT AIS ANS ANT AUX ENT EAU ION LES ONT OUR OUS QUE TIO Quadrigrama: EAUX Letra mais frequente: E (16%) Percentual das vogais: 45% Índice de frequência das letras:
Texto em Francês: La Française des Jeux a créé sa propre équipe cycliste en 1997. L'entreprise souhaitait augmenter sa légitimité dans le milieu sportif en complétant l'action de sa fondation d'entreprise et en devenant gestionnaire d'un projet sportif de tout premier plan. La Française des Jeux fait aujourd'hui figure de sponsor engagé, très impliqué dans la gestion de l'équipe et dans la lutte anti-dopage. Espanhol: EAOSRINLDCTUPMYQGVHFBJZKWX Digramas: AD AL AR AS CH CO DE EN EL ES ER LA LL ON OR OS RA RE ST RR TA UE Trigramas: ADO AQU ARA CIO DEL EDE EST IST NTE NEI OSA PER QUE SDE Letra mais frequente: E (13%) Percentual das vogais: 47% Alemão: ENRISTUDAHGLOCMBZFWKVPJQXY Digramas: ÄU BE CH DE DI EI EL EN ER EU GE IE NE ST TE UM Trigramas: CHE CHT DIE DEN DER EIN GEN ICH SCH TEN UND UNG
Letra mais frequente: E (18%) Percentual das vogais: 40% Texto em Alemão: Der Telekommunikationssatellit Astra K1 ist am Dienstag nach seinem Start mit einer russischen Rakete außer Kontrolle geraten. Er habe seine geplante Umlaufbahn nicht erreicht und werde sie nie erreichen, sagte ein Sprecher der russischen Raumfahrtbehörde. Der Satellit werde nun nutzlos im All kreisen, bis er wieder auf die Erde zurückfalle. Italiano: EIAORLNTSCDPUMGVHZBFQJKWXY Digramas: AL AN CH DE DI EL EN ER ES GH GN GL NT ON RA RE SC SI TI Trigramas: ARI ATO CHE DEL ECO EDI ERE EST IDE QUE ZIO Letras mais frequentes: E A (11% cada uma) Percentual das vogais: 48% Texto em Italiano: Abbiamo cercato di venire incontro in modo unitario ed equo, alle richieste per una piena unione che ci sono state sottoposte da parte di fedeli già anglicani provenienti da varie parti del mondo negli anni recenti», ha detto Levada. «Con tale proposta la Chiesa intende rispondere alle legittime aspirazioni di questi gruppi anglicani per una comunione piena e visibile con il Vescovo di Roma, il successore di san Pietro». «L’annuncio di questa costituzione apostolica pone fine ad un periodo di incertezza per questi gruppi che hanno nutrito speranze di nuove vie per abbracciare l’unità con la Chiesa cattolica. Português:114 AEOSRINDTMUCPLGQVBHFXZJ Digramas: BL BM BN BR BS BT CH CN CR CT FR FT GL GM GN GR GU LH MB MP NÇ NH ND NT NS NV OB OU PL PR PT QU RR RT SC SG SÇ SP SS ST TR XC XP XT Digramas nasais: AM AN EM EN IM IN OM ON UM UN ÃO ÔE Trigramas: ABS AÇO ADA ADO AVA BST ÇÃO CIA DST EMA EDO EXT FAZ GUI ICA ICO IÇO ADE EDO IDO ITE IVA ODO OSO ÕES NSC NST NSP NGU OCA UDO ULA ULO UNA Quadrigramas: ANÇA ANDO ANTE ARIO CULO DADE EIRA EIRO ENTE ENTO IÇÃO INHA Letra mais freqüente: A (11%) Percentual das vogais: 40% Indice de frequência das letras: 115
114
Não estão incluídas as freqüências das letras K, W e Y, de introdução (oficial) muito recente no idioma. Análises de freqüências de letras de textos (pequenos) em português podem ser feitas com o Processador Lingüístico de Corpus encontrável em : http://linguistica.insite.com.br/corpus.php. Igualmente, em: http://www.richkni.co.uk/php/crypta/freq.php.
De acordo com Cherry, As estatísticas de línguas tem sido da maior improtância há séculos, especialmente para o propósito de auxiliar a decifração de códigos secretos e criptogramas, para satisfazer necessidades militares e diplomáticas. A primeira tabela de freqüências de letras a ser publicada foi provavelmente a de Sicco Simonetta, de Milão, no ano de 1380; outra, usada por Porta em 1658, incluía digramas também (pares de letras, tais como ed, st, tr).116 O conhecimento das tabelas de freqüências permite identificar facilmente qual idioma foi utilizado em um determinado criptograma.117 Por exemplo, no texto cifrado: ASURULTREAEEUETNQHTNMARNCTTRLYNUEEEIQETOEAENOMTEC a análise de frequência permite deduzir, pela distribuição estatística das letras, que se trata do idioma francês. (Cf. Moles). 3.1.3 – A Redundância e Outras Características dos Idiomas Os idiomas (modernos) são formados por letras (vogais ou consoantes), estruturadas em forma de palavras, as quais também formam outras estruturas, as sentenças (ou, como são também chamadas, enunciados ou sintagmas118). Em razão das regras sintáticas, as consoantes e as vogais formam relações (ou “coerções”119) que determinam um tipo de comportamento sintático, que permite prever, 115
Os índices numéricos aqui apresentados podem ter alguma variação, quando comparados com outros índices; isto depende do Corpus utilizado, entre outras coisas. 116 CHERRY, 1971, p. 71. 117 Isso se ele (o criptograma) foi formado utilizando o sistema de transposição de letras. 118 Sintagma é uma seqüência de elementos lingüísticos unidos por uma relaçào que decorre do caráter linear da língua, em virtude do qual um termo adquire valor opondo-se ao termo que o precede ou que o segue, ou a ambos. A noção de sintagma aplica-se não só às palavras, mas aos grupos de palavras, às unidades complexas de qualquer dimensão e qualquer espécie ou seqüência de palavras que constituam uma unidade: palavras compostas, derivadas, membros de frases ou frases inteiras. (Cf. Saussure). 119 Cf. Colin Cherry.
em certa medida, letras ou palavras em sucessão a um grupo dado de signos (grupos sintáticos tais como dígrafos, trígrafos, etc.). As “coerções” também determinam, dentro de um texto, a extensão das palavras, a proporção das vogais, a proporção das consoantes, a quantidade de palavras e espaços em sentenças ou parágrafos, etc. Esta propriedade do idioma é conhecida pelo nome de redundância. Conforme diz Pignatari, Por sua própria natureza, a comunicação é uma espécie de processo variável e estatístico condicionado pela interdependência dos sinais, ou seja, pelas normas e regras que os relacionam e que decidem sobre o seu grau de informação. As regras sintáticas introduzem redundância na mensagem, a fim de que a sua recepção correta fique melhor amparada. São essas leis ou normas que dão estrutura ao sistema, de modo a permitir previsões de comportamento ou de ocorrência de sinais. Por exemplo: por que não se base à porta menos de duas vezes? Justamente para neutralizar o ruído ambiente, evitar a ambigüidade e garantir a efetiva transmissão da mensagem. A redundância pode ser entendida simplesmente como repetição; é causada por um excesso de regras que confere à comunicação um certo coeficiente de segurança, ou seja, comunica a mesma informação mais do que uma única vez e, eventualmente, de modos diferentes. De outro lado, quanto maior a redundância, maior a previsibilidade, isto é, sinal redundante é sinal previsível.120 De acordo com Colin Cherry, A redundância pode ser considerada em dois níveis, o sintático e o semântico. A redundância sintática implica adições a um texto; algo mais é dito ou escrito do que o estritamente necessário para comunicar uma mensagem.121 A redundância sintática geralmente é a responsável pela quebra de códigos. Por exemplo, a quebra do código gerado pela máquina Enigma, na Segunda Guerra Mundial, deveu-se, em parte, ao uso abusivo de chaves óbvias (chamadas cílios); às redundâncias no texto (tais como as iniciais do operador no início da mensagem); ao uso de cumprimentos desnecessários; etc. (Cf. Singh).122 3.1.4 – A Reconstituição de Palavras e Textos A redundância permite reconstituir uma palavra degenerada (à qual faltam algumas letras), pela análise de sua forma. Eis alguns exemplos:
120
PIGNATARI, 1969, p. 55. CHERRY, 1971, p. 188. A redundância semântica ocorre quando o conteúdo das palavras constituintes nucleares se repete no significado das palavras constituintes secundárias, trazendo como conseqüência frases tautológicas (ex: isto está errado, porque não pode estar certo). 122 De um modo geral, o fenômeno sintático da redundância permite quebrar a maioria dos códigos e cifras. 121
A palavra T CN CA permite razoavelmente supor que as letras faltantes sejam É e I: TÉCNICA. A palavra POL T CA, da mesma forma, permite reconstituir a palavra: POLÍTICA.123 ______________________________________________________________________ Mas não é apenas o aspecto da redundância que permite recuperar palavras (aparentemente) sem sentido. Mesmo em textos longos e embaralhados, a mente consegue fazer maravilhas. Vejam-se os exemplos a seguir. De aorcdo com uma peqsiusa de uma uinrvesriddae ignlsea, não ipomtra em qaul odrem as lteras de uma plravaa etãso, a úncia csioa iprotmatne é que a piremria e útmlia teras etejasm no lgaur crteo. O rseto pdoe ser uma bçguana ttaol, que vcoê anida pdoe ler sem pobrlmea. Itso é poqrue nós não lmeos cdaa ltera isladoa, mas a plravaa cmoo um tdoo. 35T3 P3QU3N0 T3XTO 53RV3 4P3N45 P4R4 M05TR4R COMO NO554 C4B3Ç4 CONS3GU3 F4Z3R CO1545 1MPR3551ON4ANT35! R3P4R3 N155O! NO COM3ÇO 35T4V4 M310 COMPL1C4DO, M45 N3ST4 L1NH4 SU4 M3NT3 V41 D3C1FR4NDO O CÓD1GO QU453 4UTOM4T1C4M3NT3, S3M PR3C1S4R P3N54R MU1TO, C3RTO?124 ______________________________________________________________________ Sob outro aspecto, a redundância também ajuda a reconstituir palavras cuja formação sofre o efeito de severas regras gramaticais. Por exemplo (em português), o grupo QU é invariavelmente seguido pela letra E (QUE); as letras N e H costumam se juntar, em um dígrafo nasal (NH); as letras P e B são sempre antecedidas por M; e antes de T e D não vai M e sim, N (NT e ND). De acordo com Moles,125 ... a informação, a originalidade máxima, é transportada por mensagens, das quais todos os n símbolos têm probabilidades iguais pi = p. É a distribuição igual das probabilidades que fornece com efeito o máximo de escolha. Se numa caixa tipográfica, a letra W apresenta uma probabilidade de ocorrência pw muito fraca e, portanto, nos informa de muitas coisas por sua presença, é unicamente porque, em detrimento seu, há letras bem mais freqüentes; a letra e, por exemplo, ao contráfio, nos fornecerá muito poucas informações sobre uma particularidade qualquer da mensagem. Os criptógrafos sabem 123
A falta das vogais não é tão prejudicial para a recomposição das palavras quanto a falta das consoantes (por exemplo, a sequencia O I I A não lembra, necessariamente, a palavra POLÍTICA). 124 Textos retirados da Intenet. 125 O trecho a ser citado é extremamente importante para a criptografia, e por isto será transcrito in extenso.
muito bem que, se a presença de w numa mensagem cifrada (sem transposição das letras ou após redução dessa transposição), indica com relativa segurança em francês a presença de uma palavra estrangeira, restringe-se notavelmente, por conseguinte, o campo das pesquisas: isso não é verdade senão para um símbolo e tal vantagem é destruída pela presença de grande número de letras e, s, a, etc, das quais é preciso encontrar um número bem maior numa situação determinada, antes de aprender algo de positivo sobre a mensagem (...). Assim, sendo todas as coisas iguais, a mensagem mais original é e redigida num sistema tal que todos os símbolos são equiprováveis e onde:
p aí sendo então precisamente igual a I/n, constante aproximada,
H = – log2 I/n A medida fundamental da teoria da informação nos apresenta pois um ideal do rendimento de informação com um número limitado de símbolos: aquele em que há distribuição igual das ocorrências dos símbolos (eqüiprobabilidade), que dá o máximo de escolha possível na confecção da seqüência de elementos constituindo a mensagem.126 Shannon, (...) chamou entropia máxima a esse máximo de informação obtido com símbolos equiprováveis, fornecendo o melhor rendimento do grupo de símbolos utilizados e, desse fato, fazendo “render” os símbolos ao “máximo”. (...). Na prática, pelo menos na quase totalidade das mensagens escritas, (...), os símbolos utilizados não são equiprováveis, os pi são muito diferentes; assim, a letra w é quarenta vezes menos provável em francês que a letra e ou o intervalo127, etc. Seja H1 a informação resultante de tal mensagem. Pode-se compará-la à informação Hm que seria transmitida, se todos os símbolos fossem equiprováveis Hm = log2 I/n e se chamará, segundo Shannon, informação relativa a relação H1/Hm que é evidentemente da extensão da mensagem, desaparecendo dessa relação o número de elementos N. Essa grandeza é uma medida da originalidade relativa da mensagem de H1/Hm, variando entre 0 e 1. A grandeza complementar H = I – H1/Hm que chamaremos redundância, apresenta interesse muito grande; é, com efeito, uma medida do “desperdício” relativo de símbolos, efetuado na transmissão de uma mensagem. Nula quando H1 = Hm, 126 127
E que tornaria qualquer mensagem cifrada praticamente impossível de ser decifrada (Nota de LGA). Espaço entre palavras.
isto é, quando os símbolos foram “bem” escolhidos (equiprováveis), a redundância tende para 100% (R = 1) quando é fraco o rendimento, a eficácia do modo de transmissão, caracterizado pelo vocabulário distribuído segundo as freqüências dos vocabulários, portanto da linguagem utilizada.128 Ainda de acordo com Moles, Uma notável conseqüência da redundância que ilustra bem esse caráter de globalidade de nossos conhecimentos intuitivos sobre a linguagem é a possibilidade de fazer palavras cruzadas, isto é, ligar cada letra a sistemas de probabilidades poligramáticas diferentes. Se a redundância fosse nula, toda reunião de letras seria uma mensagem possível e significativa: seria o caso no limite de certos códigos secretos telegráficos comerciais. Se a redundância for muito elevada, a estrutura da linguagem impõe constrições internas muito rigorosas. Para se tornarem possíveis as palavras cruzadas a duas dimensões, a redundância deve ser, quanto muito de [de 45% a] 50%, enquanto se abaixaria a 33% nas que são a três dimensões.129 3.1.5 – A Análise Estoscástica Claude Shannon, autor de expressivos estudos sobre comunicação (aberta ou sigilosa), criou um método capaz de determinar a redundância de textos (de uma determinada classe), em média, pela observação de quanto deles é predizível ou presumível pelo leitor. Segundo Shannon, os leitores, em geral, conhecem as regras de pronúncia, ordem de palavras, gramática, expressões idiomáticas, chavões, gírias, os quais se explicam pelo conhecimento intuitivo da estatística de cadeias de letras e palavras, digramas, trigramas, ou de probabilidades de transição de letras ou palavras (“se não de suas freqüências reais, pelo menos de suas ordenações em séries” – cf. Cherry). Shannon analisou também a formação estocástica de seqüências de letras, individuais ou agrupadas. Segundo ele afirma, quando os símbolos sucessivos não são selecionados autonomamente, e as suas probabilidades dependam dos símbolos precedentes (ou seja, a seleção depende apenas da letra precedente, e não das anteriores àquela, a estrutura estatística pode ser descrita por um conjunto de transição de probabilidades pi (f), a probabilidade de que a letra i seja seguida pela letra f.130 No caso de trigramas, em que a seleção de uma determinada letra irá depender das duas precedentes, haveria um grupo de transição de probabilidades pij (k), e assim sucessivamente, no caso de n-gramas p(i, i2 ..., in) ou de transição de probabilidades pi1, pi2 ... , in-1, in para especificar a estrutura estatística. Através do processo estocástica, e seguindo uma série de regras, são formadas, sucessivamente, “palavras” com grau crescente de similitude com o idioma.
128
MOLES, 1969, pp. 66-68. MOLES, idem, p. 74. 130 Teorema: “Se todas as várias possibilidades de transição pi ( j) são iguais, então os signos, ou letras, individuais, se tornam estatisticamente independentes e igualmente prováveis. Num caso assim, não existem absolutamente conjecturas preferenciais quanto a quais letras serão emitidas pela fonte; a redundância é dada pela existência de probabilidades desiguais de transição. (Cf. Cherry). 129
As séries de aproximações para o idioma inglês encontradas por Shannon são as seguintes:131 1. Ordem-zero de aproximação (símbolos independentes e com probabilidades equivalentes). XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYD QPAAMKBZAACIBZLHJQD 2. Ordem-primeira de aproximação (símbolos independentes, porém com fequencias referentes ao idioma inglês). OCRO HLI RGWR NMIELWIS ALHENHTTPA OOBTTVA NAH BRL
EU
LL
NBNESEBYA
TH
EEI
3. Ordem segunda de aproximação (estrutura digrama de acordo com o idioma inglês). ON IE ANTSOUTINYS ARE T INCTORE ST BE S DEAMY ACHIN D ILONASIVE TUCOOWE AT TEASONARE FUSO TIZIN ANDY TOBE SEACE CTISBE 4. Ordem-terceira de aproximação (estrutura trigrama de acordo com o idioma inglês). IN NO ISTO LAT WHEN CRATIC FROURE BIRS GROCID PONDENOME OF DEMONSTRURES OF THE REPTAGIN IS REGOACTIONA OF CRE 5. Ordem-primeira de aproximação de palavra (as palavras são selecionadas dentro de suas freqüências apropriadas). REPRESENTING AND SPEEDILY IS AN GOOD APT OR COME CAN DIFFERENT NATURAL HERE HE THE A IN CAME THE TO OF TO EXPERT GRAY COME TO FURNISHES THE LINE MESSAGE HAD BE THESE132 6. Ordem-segunda de aproximação de palavra. As transições de probabilidade das palavras são corretas, mas não nenhuma outra estrutura. THE HEAD AND IN FRONTAL ATTACK ON AN ENGLISH WRITER THAT CHARACTER OF THIS POINT IS THEREFORE ANOTHER METHOD FOR THE LETTERS THAT THE TIME OF WHO EVER TOLD THE PROBLEM FOR AN UNEXPECTED133
131
SHANNON & WEAVER, 1975, pp. 47-48. È possível perceber que, ainda que surjam palavras reconhecíveis, o texto não faz sentido (não possui uma estrutura semântica). (Nota de LGA). 133 De acordo com Shannon, “a semelhança com o texto ordinário do idioma inglês aumenta gradativamente com cada um dos passos empreendidos na série”. SHANNON & WEAVER, idem, p. 48. 132
Ainda de acordo com Shannon, a redundância do inglês é de 50%. Isto significa que, ao se escrever nesta língua, metade da escrita é determinada pela estrutura da linguagem, e a outra metade, pela livre escolha do escritor. Os processos estocásticos utilizados por Shannon são conhecidos como processos Markoff discretos. Ainda segundo ele, Em um sistema existe um número finito de possíveis “estágios”; S1, S2..., Sn . Em adição a isto, há um grupo de transição de probabilidades, Pi (j) a probabilidade de que o sistema se encontra no estágio Si, este seguirá para o próximo estágio Sj. A fim de transformarmos o processo Markoff em uma fonte de informação, faz-se necessário somente presumir que uma letra é produzida em cada transição de um estágio para o próximo. Os estágios corresponderão “a “influência residual” das letras precedentes. (...). Dentre os possíveis processos Markoff para fonte distinta, há um grupo cujas propriedades inerentes são de grande importância na teoria da comunicação. Esta categoria especial consiste dos processos “ergódicos”, (...). Num processo ergódico todas as seqüência produzidas pelo processo têm as mesmas propriedades estatísticas, Por conseguinte, as freqüências das letras, as freqüências de digramas, etc., obtidas de determinadas seqüências, irão, de acordo com o aumento do comprimento das seqüências, avizinhar-se dos limites definidos, independentemente de uma seqüência específica. Realmente isto não é verdadeiro em relação a todas as seqüências; todavia, o grupo de seqüências ao qual não se aplica tem probabilidades iguais a zero. Portanto, a grosso modo, a propriedade ergódica de uma seqüência significa homogeneidade estatística.134 De acordo com Cherry, Nos textos em inglês, ou nos de outras línguas humanas, as várias probabilidades de transição que governam o aparecimento das letras sucessivas são muito desiguais. À guisa de ilustração, suponhamos um teletipo que dê a seguinte seqüência: ..................................... com a chegada de ‘t|’ em que a barra representa o instante “agora”. A letra seguinte é governada por um conjunto inteiro de probabilidades condicionais e depende, no limite, de tudo quanto a precedeu. Todavia, a influência de letras e palavras várias linhas, parágrafos ou páginas atrás será muito ligeira. São as poucas letras que precedem imediatamente o “agora” que têm o maior controle, com certas exceções devidas a rígidas regras gramaticais. Mas, no que respeita à medição numérica da redundância, dispomos apenas daquelas probabilidades condicionais que têm que ser coligidas pelo trabalho paciente de criptógrafos e 134
SHANNON & WEAVER, ibidem, pp. 49-50.
estudiosos da linguagem. A tarefa de estabelecer freqüências de monogramas, digramas e trigramas é formidável, quanto mais ir além disso. O fato de que nós mesmos possamos adivinhar letras sucessivas de um texto, com bastante precisão, implica que possuímos imensos depósitos mentais de ordenações em série de letras e palavras;135 entretanto, não conhecemos as várias transições como freqüências numéricas relativas.136 3.1.6 – Informação, Informação Máxima e Redundância Moles, analisando um texto em francês, mostra que: Seja um texto francês de uma extensão qualquer. Procuremos a taxa de informação da língua francesa, isto é, a informação R por unidade de extensão (N = 1 signo por unidade de extensão da mensagem). Segundo a fórmula:
De acordo com o uso criptográfico, negligenciemos os intervalos entre as palavras. Conhecemos bem, pelos trabalhos dos criptógrafos, as estatísticas das probabilidades (aqui aproximadas) das letras em francês: E SAN I R T UO L DCM P Q B FGHV 17 8 8 8 8 7 7 6 6 6 4 3 3 3 1,5 1 1 1 1 1 pi 6 pII 8 pII 4 pIV 6 pV X J K W 0,6 0,2 0,1 0,1
Y Z 0,1 0,2
Condensando em grupos de letras mais ou menos equiprováveis: 1 6 3 4 6 6
pI pII pIII pIV pV pVI
=
= = 6x8 = 3x6 = 4x3 = 6x1 6x0,2 =
17% = = = = 1%
47%137 17% 12% 6%
A taxa de informação na língua francesa escrita considerada como uma seqüência de letras é:
135
A quebra de um código, como resultado do trabalho paciente de decodificação por um criptoanalista, é função, quase sempre, deste talento natural e intuitivo. 136 CHERRY, idem, pp. 279-280. 137 Os valores são arrredondados.
= 3,33 x 1,16 = 3,86 bits/unidade de extensão. A informação relativa é o coeficiente de qualidade na expressão literal do pensamento: a taxa de informação máxima para as letras que teria sido atingida se todas as letras fossem equiprováveis p = 1/26 = 4% é: Rm = 3,33 log10 26 = 4,8 bits Donde a redundância relativa às letras do francês: 4,8 – 3,86 = 10% 138 4,8 Moles determinou também a redundância bruta do idioma francês, encontrando o valor de 55%.139 Em sua experiência, ele suprimiu gradativamente, ao acaso, porcentagens crescentes de letras de um texto, e pedia em seguida, aos leitores participantes, que tentassem recompor o sentido do texto. No idioma hebraico, ele encontrou uma redundância bruta de apenas 10,4%. Isso permitiria, em relação à questão das palavras cruzadas vista anteriormente, que no hebraico clássico pudessem ser feitas palavras cruzadas a três dimensões. Para compreender a questão da redundância, Moles apresenta um eixo que varia entre 0 (redundância nula) e 100 (redundância total), e mostra as suas conseqüências sobre a linguagem:
Para Moles, (...) o pensamento organiza, estrutura e codifica a linguagem, ligando os símbolos uns aos outros num processo de Markoff a probabilidade de cada letra j não sendo mais independente (pi) e sim dependente f (pi) da letra i que a precede: pij = pi f (pi )
138 139
Moles menciona em outra parte o valor de 19%. Moles menciona em outra parte o valor de 45%.
3.1.7 – Escolha, Incerteza e Entropia Sendo cada fonte de informação distinta um processo de Markoff, Shannon tentou estabelecer a proporção com que a informação é produzida. Supondo um grupo de eventos cujas probabilidades de ocorrência são p1, p2, ... , pn , que são conhecidas, a “escolha” é a quantidade envolvida na seleção de determinado evento. Desenvolvendo seu raciocínio, Shannon admitiu que, se fosse possível medir H(p1, p2, ... , pn), seria razoável supor algumas propriedades (não serão apresentadas aqui). Para ele, a única equação (único H) que satisfaz as suas suposições é representada pela equação:
Esta equação permite medir a quantidade de informação relativa a acontecimentos de probabilidade desigual, calcular a informação contida em qualquer tipo de comunicação, como permite também medições da escolha e da incerteza (H é também a incerteza da mensagem, e por conseguinte, a medida da informação).140 O valor de H é uma expressão da entropia, tal como é definida na termodinâmica.141 De acordo com Shannon, A média da entropia de uma fonte em relação ao valor máximo que esta poderia ter ainda enquanto que restrita aos mesmos símbolos será intitulada entropia relativa. Isto, (...) é a compressão máxima possível quando codificamos dentro do mesmo alfabeto. Um menos a entropia relativa é a redundância.142 Dadas n informações X = {x1, x2, ..., xn} ocorrendo respectivamente com probabilidades p(x1), p(x2), ... , p(xn) , a entropia é definida pela fórmula:
Como log2[1/p(Xj)] representa o número de bits para codificar Xj, tem-se que E(X) é o número médio de bits para codificar todas as informações em X.
140
A informação anula a incerteza. Por outro lado, a ausência de redundância com o máximo de entropia aumenta consideravelmente a incerteza. Este é o fundamento do teorema de Shannon relativo aos sistemas criptográricos: se um texto desordenado não puder oferecer nenhuma informação acerca de seu conteúdo claro (ou de sua estrutura), ele não pode ser recuperado sem a chave que o desordenou. Ou seja, quanto mais desordenados estiverem os dados cifrados, mais complicado será para descobrir uma correlação entre eles e os dados puros. 141 O conceito de entropia surgiu na teoria das comunicações devido à similaridade das equações encontradas tanto na termodinâmica quanto na teoria dos sistemas. A entropia é a medida da quantidade de desordem em um sistema. Aplicado à teoria das comunicações, a entropia permite medir as relações entre informação e ruído em um canal de comunicações. A redundância em um sistema de comunicações visa exatamente diminuir a entropia do sistema (ou do canal de comunicação). 142 Ou seja: R = 1 – Er.
Imaginando X com dois elementos, a probabilidade do primeiro elemento igual a p e a do segundo elemento igual a q, onde p = 1 – q. E(X)= – p (plog p + qlog q)
3.1.8 – Incerteza Relativa e Redundância Considerando uma única página de texto do inglês escrito, e considerando os valores da tabela abaixo, Elwyn Edwards apresentou os seguintes cálculos para a incerteza relativa e a redundância do idioma:
Incerteza relativa = – ∑ pi log pi = 4,129 = 87,9 % log n 4,700 Redundância = (1 – 0,879)x100 = 12,1% 3.1.9 – A Lei de Zipf
Um dos maiores estudiosos das línguas foi o lingüista e filólogo norte-americano Georges Kingsley Zipf (1902-1950), que foi professor em Harvard. Zipf realizou um extenso estudo de aspectos estatísticos da fala e da escrita. Ele investigou as leis concernentes à extensão das palavras, os diferentes significados e outros fatores, tais como freqüências de letras, palavras, sílabas e de partes da oração (verbos, substantivos, adjetivos, etc.), e de aspectos relativos ao comportamento verbal das pessoas. Ele percebeu que, enquanto que somente umas poucas palavras são usadas com mais frequência, a maioria é usada raramente. Ele mostrou que a frequência de uso (Pn) de palavras (p. ex., do inglês) e n*, sua ordem de série (rank), estão estreitamente correlacionadas através da expressão (lei de Zipf)
Essencialmente, a lei de Zipf diz que, dado um Corpus de elocuções de uma linguagem natural, a frequência de qualquer palavra é inversamente proporcional à sua ordem na tabela de frequência. Assim, a palavra mais freqüente ocorrerá aproximadamente duas vezes mais do que a segunda palavra mais freqüente; esta ocorrerá duas vezes mais freqüentemente do que a quarta palavra mais freqüente, e assim sucessivamente. Por exemplo, em inglês, de acordo com o Corpus Brown, a palavra the (a que ocorre mais freqüentemente) surge em 7% do total de palavras listadas (69.971 vezes em 1.000.000 de palavras); a palavra of (segunda no ranking) surge em 3,5% do total (36.411 ocorrências); e a palavra and (terceira mais freqüente) surge em cerca de 3,4 % do total (28.852 ocorrências). Quando plotada logaritmicamente, a curva de Zipf apresenta a seguinte configuração:
Neste caso, a palavra the aparece plotada em: x = log(1), y = log(69971). A lei de Zipf prevê que em uma população de N elementos, a frequência de elementos da ordem k, f(k;s,N) é:
N é o número de palavras do idioma inglês, sendo que o expoente s é igual a 1, e f(k; s, N) será a fração de vezes na qual a kth palavra mais comum ocorre.143 3.2 – A Complexidade dos Idiomas Os idiomas, de um modo geral, apresentam uma complexidade oculta que surge, por exemplo, quando de pretende traduzir um texto de um idioma para outro. De um modo geral, o vocabulário de um idioma reflete os principais interesses da cultura onde ele surge e se desenvolve. Por exemplo, os idiomas de determinadas etnias indígenas possuem termos adequados que caracterizam com precisão conhecimentos zoológicos e botânicos, com conhecimentos práticos que ultrapassam grandemente o conhecimento do ocidental de nível superior. (Cf. Levi-Strauss). Outro exemplo: no idioma árabe (tradicional), existem mais de seis mil diferentes termos para designar o camelo, suas partes e os equipamentos relacionados. Estas características idiomáticas, além, é claro, da existência de gírias (ou argot), de falares especializados (o jargão de engenheiros, médicos, advogados, cientistas, etc)144, podem dificultar sobremaneira a decifração de um texto, devido à sua imprevisibilidade.145 Conforme relata Kluckhohn, O provérbio italiano “traduttore, traditore” (o tradutor é um traidor) é inteiramente certo. Pedi a um japonês, que tinha razoáveis conhecimentos do inglês, que me traduzisse de sua língua a frase da nova constituição japonesa que representa a nossa “vida, liberdade e busca da felicidade”. Ele traduziu: “licença para desfrutar prazer sensual”.146 Para Kluckhohn, há três espécies de tradução: a variedade literal, em que se traduz palavra por palavra, que conduz a deformações óbvias; o tipo oficial, em que se respeitam certas convenções, para a tradução de equivalente idiomáticos; a tradução psicológica, em que a tradução procura exprimir e produzir nos ouvintes os mesmos efeitos que produzem nos ouvintes do texto original. De acordo com a lingüística, os idiomas, historicamente, passam do complexo para o simples, e sofrem três tipos de variações: mudanças na pronúncia das palavras147; mudanças na gramática; mudanças no léxico. As mudanças gramaticais e lexicais podem ser muito profundas, tornando quase irreconhecível um texto (escrito) de um idioma arcaico. Por exemplo, este trecho de inglês antigo é absolutamente irreconhecível: ****** [H]næ[f] hleoþrode ða ‘Ne ðis ne dagað eastan 143
hornas byrnað?’ heaþogeong cyning: ne her draca ne fleogeð
Ver: http://en.wikipedia.org/wiki/Zipf%27s_law. Segundo Foucault, estes “falares especializados” formam “ilhas de poder”. (Cf. Foucault). 145 Neste caso, o criptoanalista deve ter o auxílio de especialistas. 146 KLUCKHOHN, 1963, p. 154, In: O Dom das Línguas. 147 Geralmente, pela perda das inflexões. 144
ne her ðisse healle Ac her forþ berað,
hornas ne byrnað fugelas singað,148
Ou ainda, este trecho de português arcaico: Oy mays quer’ eu já leixa’ lo trobar e quero-me desenparar d’Amor e quer’ ir algüa terra buscar, hu nunca possa seer sabedor ela de mi, nen eu de mha senhor, poys que lh’ é d’eu viver aqui pesar.149 Como é possível perceber, uma análise de freqüências realizada sobre tais textos daria uma distribuição de letras, digramas e trigramas bastante diferente da apresentada por esses idiomas, em seu aspecto atual.150 Considerando esta característica histórica, talvez pudesse ser criado um tipo de código de difícil deciframento, baseado nas estruturas arcaicas de um idioma.151 Quanto mais esta estrutura fosse desconhecida, mais difícil (supostamente) se tornaria sua decodificação (de texto cifrado para texto claro).152 A verdade é que um tipo de codificação deste tipo surgiu durante a Segunda Guerra Mundial, a qual procurava aproveitar as características de um idioma “indecifrável”, para comunicações rápidas (verbais) por rádio. O idioma escolhido foi o navajo, pouco ou nada conhecido fora dos EUA.153 Por outro lado, um idioma como o gaélico, que pode apresentar palavras extremamente complexas tais como: CONAS A THUIGFEADH DUINE AN GHAEILGE MARA BHFOGHLAIMEODH SE I não serviria, realmente, para criar um código indecifrável, em virtude da sua difusão e da grande quantidade de especialistas no idioma. 148
“---- Cumeeiras se queimam?’ Hnæf lá falou, jovem na luta, e Rei. ‘Isso não é a manhã, nem nenhum dragão cá voa, nem as cumeeiras se queimam, neste salão. Algo à frente sai. Cantam pássaros, …’ ”. Trecho de poema de O Fragmento de Finnsburh, circa séc. VII-IX. Tradução de Erick Ramalho. Ver: http://www.brathair.com/revista/numeros/06.02.2006/finnsburh.pdf. 149 “A partir de hoje não quero mais trovar/e do amor me faço desertor./Noutra terra me irei refugiar/onde de mim não saiba o meu amor/e do seu nome não ouça eu o rumor/pois viver eu aqui lhe dá pesar.” Trecho de Cantiga de Amor de Mestria, das Trovas de D. Diniz. Atualização de Natália Correia. Edição exclusiva da Tertúlia do Livro, Galeria Panorama, Portugal. S/d. 150 Esta condição também demonstra que o Corpus no qual se baseia a análise de frequência é função do momento histórico do idioma. Um Corpus baseado em obras literárias do século XIX, por exemplo, traria palavras que atualmente estão em desuso. 151 O especialista Jacques Bergier fez a sugestão de se misturarem dois idiomas modernos em um mesmo texto claro, o qual seria encriptado em seguida. 152 O problema, neste caso, é que na atualidade não é difícil encontrar eruditos especialistas capazes de entender e “traduzir” a maioria dos idiomas arcaicos. Na verdade, quando o idioma é bastante arcaico e desconhecido, a tarefa de “decodificá-lo” é realmente um trabalho de criptoanálise. Em sua obra, Singh relata como se fizeram os extraordinários trabalhos de deciframento dos hieróglifos egípcios e da escrita Linear B. 153 Curiosamente, este foi um idioma que jamais foi estudado pelos antropólogos alemães, que, antes da guerra (Segunda) realizaram um extenso estudo acerca das línguas e costumes da maioria das tribos norteamericanas. A tribo navajo não foi estudada, exatamente devido à extrema dificuldade de seu idioma nativo. Kluckhohn, em seu livro, faz vários comentários acerca das peculiaridades do idioma navajo.
O idioma chinês oferece um tipo diferente de dificuldade no que se refere à sua interpretação. Em Campos (org.), encontramos: Os caracteres ideográficos monossilábicos e não-flexionáveis proporcionam um instrumento congenial à reflexão relacional, que tem sido uma característica distintiva do pensamento e da cultura chinesa. Em virtude da estrutura da língua, a atenção se volta para as relações entre as palavras, mais do que para as próprias palavras individualmente. Embora isto se aplique, em maior ou menor grau, a todas as línguas, é particularmente relevante no caso do chinês. Em inglês, um substantivo é um substantivo e conota uma espécie de “substância” real ou imaginária. Mas em chinês, quase todas as palavras, com exceção das partículas “vazias”, podem ser substantivas, dependendo de sua posição e de sua função na sentença. A dependência da ordem das palavras e o emprego de palavras auxiliares para esclarecer os significados salientam inevitavelmente a importância das relações e do arranjo estrutural (pattern) das palavras.154
154
Yu-Kuang Chu, Interação entre Linguagem e Pensamento em Chinês, In: CAMPOS, 1977, pp. 242243.
CAPÍTULO IV CRIPTOANÁLISES CLÁSSICAS 4.1 – A Decifração de Textos Cifrados Clássicos Textos cifrados são escritos a partir de um texto claro em um determinado idioma. Este idioma, naturalmente, está submetido às regras de construção lexicais e gramaticais, que por si só proporcionam uma série de possibilidades para o criptoanalista. A existência de um alfabeto, que é a base para o idioma155, determina também o modo como as palavras são construídas. É quase impossível escrever um texto sem usar (ou abusar) de artigos e preposições, cuja posição entre as palavras os torna fáceis de identificar. Verbos, normalmente, são seguidos de artigos (matar o rei); (roubar o código). Substantivos quase sempre são seguidos de preposição e de adjetivos (casa de pedra). Em sua construção, as palavras podem começar por uma consoante e terminar por uma vogal (código; submarino); iniciar e terminar com consoantes (minar; manganês); iniciar e terminar com vogais (obtuso; almirante); começar por uma vogal e terminar com uma consoante (equipar; obter). O idioma determina o número médio de palavras em uma sentença; o número médio de palavras em uma linha; o número médio de palavras em um parágrafo.156 Determina, igualmente, a concisão de uma mensagem. Conforme Kluckhohn, Creio que pela primeira vez compreendi bem a natureza da língua quando meu preceptor de Oxford pediu-me que traduzisse para o grego algumas páginas de um retórico britânico do século XVIII, que continham a seguinte frase: “ela atirou contra ele a máxima virulência da sua invectiva”. Lutei com a frase e afinal cometi o pecado imperdoável de olhar cada palavra no dicionário inglês-grego. Meu preceptor olhou de relance a monstruosidade resultante e me encarou com um misto de desgosto, pena e espanto. “Meu rapaz – disse ele, – não sabe que a única maneira possível de traduzir isso é deinos aedeitai, ela censurou muito fortemente?”157 Em um determinado contexto, várias palavras podem tornar-se muito comuns: minar; porto; submarino; minas; vigiar; etc.158 155
“Toda língua é também um modo especial de encarar o mundo e interpretar a existência. Oculto na estrutura de cada diferente idioma, acha-se todo um conjunto de suposições inconscientes a respeito do mundo e da vida nele”. Também: “Cada povo tem as suas classes próprias características, nas quais os indivíduos distribuem a sua experiência. Essas classes são estabelecidas principalmente pelas línguas, por meio dos tipos de objetos, processos ou qualidades que recebem especial ênfase no vocabulário e igualmente, embora de maneira mais sutil, por meio dos tipos de diferenciação ou atividade que se distinguem nas formas gramaticais.” (Cf. Kluckhohn). 156 O alemão possui muito menos palavras em um parágrafo do que o italiano, por exemplo, considerando o mesmo texto. 157 KLUCKHOHN, idem, p. 155. 158 Um pesquisador francês, o dr. Samain, descobriu que bastam oito palavras-chaves para definir o conteúdo de um artigo especializado. Assim, se o contexto é conhecido (sabe-se qual é o tema do texto cifrado), basta procurar por algumas palavras-chaves. Ao contrário, buscar algumas palavras-chaves pode
Além disso, alguns tipos de comportamentos dos operadores criam padrões que enfraquecem os criptogramas. É o caso, por exemplo, de cumprimentos desnecessários; da escolha de chaves óbvias159; do duplo ciframento de chaves; do uso de assinaturas (em forma de iniciais do operador); e, o mais fatal, do uso repetido de uma mesma chave. 4.2 – Decifrando Cifras Monoalfabéticas O exemplo a seguir deve-se a Pujol:160 Vejamos, agora, a seguinte cifra: bxy khxw puh xpwx bgwxox e i xb ndx x vgk bxg k
t o i g gv vd l g
vdpkad tuowut d t odxp t oign pgoh t oxc pxqto vxixd d pxgdymbxbgsg sgiuk n bxxt bv oxbgpx i tosp x v
Aqui, as freqüências são: a= 0 b= 9 c= 3 d = 13 e= 0 f= 0 g = 18
h= 3 i= 6 j= 0 k= 5 l= 1 m=1 n= 1
o = 15 p = 10 q= 2 r= 0 s= 5 t = 12 u = 10
v= 9 w= 4 x = 23 y= 1 z= 0
É evidente, portanto, que x=0. As freqüências indicam que “g” poderia ser “n”; todavia, o fato do agente secreto só encontrar uma vez o grupo “xg” que seria “en” e nunca “gx”, que seria “ne”, sílabas muito comuns, faz com que ele atribua à letra seguinte na ordem de frequencia, isto é, ao “o” o significado de “n”. Nesse caso, as sílabas “uo” e “to” seriam, parece, “on” e “in”. O agente secreto encontraria, por conseguinte, a sua primeira linha: tovdpksdtuo i n ................. i o n no qual o “d”, muito freqüente (13 vezes), poderia perfeitamente ser um “t”. Encontraria, então, o seguinte: tovdpksdtuo i n ... t ........ t i o n definir o conteúdo desconhecido do texto cifrado. Esta técnica é utilizada no sistema mundial de vigilância – ECHELON – que grava automaticamente qualquer mensagem, em qualquer meio, quando palavras-chaves são detectadas. 159 De acordo com Singh, as chaves óbvias eram conhecidas como cílios, entre os criptoanalistas. 160 PUJOL, 1967, p.61.
O agente secreto sabe que o “v” é freqüente (9 vezes),o mesmo sucedendo com o “p” (10 vezes), verificando também que o “s” é muito raro (5 vezes). As hipóteses v=s e s=c são prováveis, portanto: tovdpksdtuo i n s t r .. c t i o n O agente descobre, assim, a palavra Instruction. O resto, em conseqüência, deixa de oferecer qualquer dificuldade. 4.3 – Decifrando Cifras Polialfabéticas A Cifra de Vigenère, por muito tempo considerada inquebrável, foi violada por uma criptanálise realizada pelo inglês Charles Babbage, no século XIX. Babbage realizou uma pesquisa exaustiva nesta cifra, procurando por padrões ocultos.161 Sua análise permitiu descobrir que a fraqueza da Cifra de Vigenère estava no tamanho da chave, que, se fosse pequena, introduzia padrões de repetição facilmente detectáveis, que permitiam a decifração do texto cifrado. A solução, que seria a utilização de chaves mais extensas, criava outras complicações, como a dificuldade de memorização, ou tornar mais difícil e demorado tanto o processo de codificação quanto o de decodificação. A descoberta de Babbage não se tornou conhecida, porque ele não chegou a publicá-la. Assim, atualmente o processo de criptanálise da Cifra de Vigenère é conhecido pelo nome de Teste de Kasiski ou Método de Kasiski.162 O teste de Kasiski permite deduzir o comprimento da palavra-chave usada no ciframento por substituição polialfabética. Ou seja, o criptoanalista procura descobrir o comprimento da chave utilizada. Quando supõe ter feito esta descoberta (do comprimento da chave (n), ele forma um bloco n x n, que pode então ser tratado como uma cifra de substituição monoalfabética. Geralmente, o comprimento é deduzido quando se conta a distância entre dois grupos idênticos de letras.163 Em outra aplicação do teste de Kasiski, costuma-se substituir uma palavra comum ou possível, ao longo do texto cifrado, buscando correspondências ocultas. Em um texto em inglês, é extremamente provável que surjam palavras tais como the, of ou and. Se a cifragem se faz unicamente por substituição, o criptoanalista pode ir tentando colocá-las ao longo do texto cifrado, até encontrar as correspondências entre letras claras e cifradas.
161
A busca desses padrões ocultos viriam se tornar parte da técnica até hoje utilizada na criptanálise, que é a busca de seqüências de letras que aparecem repetidas ao longo do texto. Para realizar uma análise de freqüências em vários idiomas, ver: http://rumkin.com/tools/cipher/cryptogram-solver.php. 162 Friedrich Wilhelm Kasiski (1805-1881), oficial do exército prussiano. Ele publicou sua descoberta no livro Geheimschriften und die Dechiffrir-Kunst (Secret Writing and the Art of Deciphering), em 1863. 163 Veja-se: http://en.wikipedia.org/wiki/Kasiski_examination (a propósito, as consultas à WIkipédia devem se limitar, se possível, aos textos originais em inglês. O motivo é a proliferação insensata da tradução automática, sem que se faça pelo menos uma revisão final, para dar legibilidade ao texto “traduzido”).
O exemplo mostrado a seguir mostra como funciona a técnica de Kasiski (cf. Sgarro). A palavra-chave é PIRACY (Pirataria), e o criptograma está mostrado logo abaixo.164 A TRITHEMIUS SQUARE AND A VIGENERE SQUARE ARE ONE AND TH E SAME THING P IRACYPIRAC YP I RAC YP I R ACYPIRAC YP I RAC YPI RAC YPIR ACY P IRA CYPI R P BHVFTUZUU QFCRRG YCL R VKETVVRG QFCRRG YGM FNG YCL KHG QPUV TJGCO
No criptograma, nota-se que existe uma repetição do grupo QCFRRG, bem como do grupo YCL. O primeiro se repete em um intervalo de 18 letras, enquanto que o segundo se repete em um intervalo de 24 letras. Em razão desses intervalos, e tendo em conta a repetição após 18 letras, pode se presumir (como hipótese) que a chave é um divisor de 18. Quanto à repetição após 24 letras, pode ser igualmente presumido que a chave é um divisor de 24. Como seis é um divisor comum para 18 e 24, isto sugere que a extensão da palavra-chave seja de seis letras (sempre como hipótese). Nesse momento, o criptograma é dividido em blocos de seis letras cada um, com o que se formam “criptogramas parciais” nos quais o primeiro é constituído pela primeira letra de cada bloco, o segundo pela segunda letra de cada bloco, e assim por diante, como mostrado a seguir (contam-se as letras do criptograma de seis em seis). Primeira letra: Segunda letra: Terceira letra: Quarta letra: Quinta letra: Sexta letra:
PTFCTFGCPC BUCLVCMLUO IZRRVRFKV IURVRRNHT VUGKGGGGJ FGYEQYYQG
Desse modo, cada criptograma parcial contém todos os cifrários monoalfabéticos, o que os torna vulneráveis à análise de freqüências usada nestes casos.165 A análise de Kasiski, entretanto, só funciona se o criptograma for mais longo do que a palavra-chave (que constitui, no caso, um período de seis letras).166 4.3.1 – O Índice de Coincidência O Índice de Coincidência (IC) é um método desenvolvido em 1920167 pelo criptólogo norte-americano William Friendman, para atacar cifras de substituição polialfabética com palavras-chaves periódicas. O IC é utilizado para se determinar a monoalfabeticidade de um texto. Se este valor estiver ao redor de 0,762, a probabilidade de o texto claro ter sido submetido a 164
Evidentemente, o analista não conhece nem a palavra-chave nem a mensagem clara. Esta análise mostraria que a grande incidência da letra G resulta do fato de que ela substitui a letra e, na mensagem. 166 A análise pelo método de Kasiski fica mais difícil, se a mensagem clara sofrer inicialmente um processo de transposição (ou seja, se ela for embaralhada) [veja-se o item 10.3.1.2.1 para maiores detalhes sobre este método]. 167 O método foi exposto no artigo The Index of Coincidence and Its Application in Cryptography, publicado em 1920. 165
uma substituição monoalfabética é muito grande. Se o índice for significativamente menor, provavelmente o texto claro foi submetido a uma substituição polialfabética. Cada idioma possui um IC próprio, porque a frequência da ocorrência das letras é peculiar a cada um deles. Isto, é claro, altera o valor do índice. Em um texto cifrado, a quantidade de letras geralmente não contém informação suficiente para encontrar a variação das frequências relativas de cada letra, em relação a uma distribuição uniforme. Esta deve ser obtida, então, pelo IC. Encontrado o IC, é possível encontrar o período da palavra-chave. Encontrado o período e conhecendo-se o algoritmo de cifragem e o idioma do texto claro, pode-se então usar o método de Kasiski para realizar a decifragem. A matemática do IC é a seguinte. Supondo-se que x = x1 x2 x3 ... xn seja um texto de n caracteres do alfabeto, define-se o índice de coincidência de x ( Ic (x) ) como a probabilidade de dois caracteres aleatórios de x serem iguais (corresponderem à mesma letra). Ou seja:
O valor de m corresponde ao total de letras do alfabeto ( corresponde à frequência do caracter de codificação i na mensagem.
) em questão; fi
Inicialmente, faz-se uma tabela com a frequência das letras do texto cifrado e contam-se as letras n deste texto. A fórmula dada a seguir permite calcular a probabilidade da ocorrência de cada uma das letras do alfabeto num texto cifrado, de A até Z (f1 corresponde a A e n ao número total de letras do texto analisado). Repete-se o cálculo com f2 para B, até f26 para Z.
Por exemplo, suponha-se que a letra A tenha ocorrido 13 vezes ao longo do texto cifrado, o qual possui 97 letras. Calcula-se 13(13-1) = 13.12 = 156; em seguida, calculase 97(97-1) = 97.96 = 9312. Basta agora dividir um pelo outro: 156/9312 = 0,01675. Repete-se o cálculo para cada letra que ocorre no texto cifrado, e somam-se os resultados parciais para encontrar o valor de IC. Valores (aproximados) de IC para alguns idiomas modernos são os seguintes: Francês Italiano Espanhol
0,0778 0,738 0,0775
Português (BR) Português (PT) Inglês
0,0791 0,7272 0,0661
4.3.2 – Índice de Coincidência Mútua Se já se sabe antecipadamente o comprimento correto da chave, K = k1,k2, ... , km, usa-se o índice de coincidência mútuo (ICM) do idioma, como forma de obter as diferentes sub-chaves.
com n’ o comprimento o sub-texto j; pi os valores de referência para o idioma; os índices i + gj calculados módulo Caso gj = kj tem-se que Igj ≈ Ic (Pt). Resta agora calcular cada uma das sub-chaves K = k1, ....... , kj , (sendo I o comprimento da chave). Não se pode fazer o estudo de frequência das letras diretamente, como se fez para a cifra de deslocamentos simples, visto que não se tem textos, e sim sub-textos. Suponha-se que se tenha dois textos x = x1x2 ... xm e y = y1y2 ...yn. O índice de coincidência mútuo de x e y, designado por Icm(x,y) é definido como a probabilidade de um caracter aleatório de x ser igual a um caracter aleatório de y.
com as freqüências do caracter de codificação i em x e y, respectivamente. Usando-se as freqüências do idioma como referência, as diferentes sub-chaves podem ser obtidas. 4.4 – Decifrando Anagramas Uma mensagem, quando sofre a encriptação por transposição, pode se tornar extremamente resistente à desencriptação. Veja-se o exemplo da mensagem a seguir. MATEM O REI OIEMRMTEA168 A dificuldade em desencriptar a mensagem é proporcional ao seu tamanho. No exemplo dado, nove letras podem ser posicionadas de 362.880 maneiras diferentes.169 Uma mensagem maior extenderia este valor a uma quantidade exorbitante. 168 169
Os espaços entre palavras foram eliminados. O resultado surge da aplicação da fatorial do número dado: 9!
A quantidade enorme de chaves possíveis, no entanto, não garante a invulnerabilidade do processo de transposição. Este, por manter as mesmas letras, é passível de deciframento pela análise de freqüências simples, duplas e triplas e pelas regras do léxico e da gramática. Por exemplo, se o idioma português foi utilizado para o ciframento, o dígrafo QU é bastante comum, e este dígrafo normalmente costuma ligarse às letras A (em QUAL), E (em QUE), I (em QUILÔMETRO) e O (em QUOCIENTE). Além disso, uma grande parte das palavras em português termina em uma vogal, o que facilita recolocar um texto em ordem. 4.5 – Decifrando Sistema Homofônicos Um texto cifrado a partir, por exemplo, do idioma inglês, deveria conhecer a sua distribuição estatística de letras para substituir as letras mais freqüentes. Neste caso, poderia ser utilizada a tabela abaixo, em que as letras mais freqüentes são substituídas (alternadamente) por um conjunto maior de números, e as menos frequentes, por apenas um número.
O problema, nesse caso, é que a análise de freqüência permite também descobrir a incidências das letras menos freqüentes, e isto permite a decifração do texto cifrado. Além do mais, a periodicidade na substituição (por alternância dos caracteres com símbolos múltiplos) acaba por comprometer o sigilo da mensagem, pois as torna muito previsíveis.170 4.6 – Criptoanálise do Sistema Chase No exemplo dado anteriormente sobre este tipo de codificação, resultou o texto cifrado CLLYE–+CE. Se o analista tiver acesso a outros textos cifrados interceptados, ele logo percebe que o total de caracteres usados é 30, com a inclusão de quatro símbolos. Isto permite deduzir (como hipótese) que há uma tabela de conversão 3x10.
170
O ideal seria a substituição ao acaso. Mas, como ainda se verá, conseguir o “acaso” não é uma tarefa fácil.
Se o método de codificação for conhecido (ele foi publicado), sabe-se que a palavra clara tem um caracter a menos, e que a primeira letra, com certeza, está na primeira fileira (C = 1X).171 Pode-se presumir que os símbolos estarão no final da tabela. Por esta hipótese, os símbolos “– +” estarão na terceira fileira (“–” = 3Y, “+” = 3Z; Y e Z podem ser 7, 8, 9 ou 0). A ordem pode ser “– +” ou “+ –”. 1 p p . r 3 3 1 r x q q . s y z x s CL LY E +– C E 1 p p . r 3 3 1 r x q q . s y z x s CL LY E –+ CE Tendo tido acesso a outros textos cifrados, o analista passa agora a compará-los entre si. Suponha-se, por exemplo, que tenha sido interceptada a mensagem IIFFMANXSOMH.172 Novamente, a letra I está na primeira fileira. 11. . . . . . . . . . t t . . . . . . . . . . I IFFMANXSOMH Se o analista conseguir interceptar mensagens suficientes, ele logo deduz quais as letras que estão na primeira fileira, mas não a sua ordem. Estas letras (em número de dez, na primeira fileira) são como um anagrama para a palavra-semente (neste caso, a ordenação correta é LEXICOGRAP). Assim que as letras são ordenadas, deduz-se facilmente qual é a palavra (LEXICOGRAPH). A decodificação restante não oferecerá dificuldade.173 4.7 – A Criptoanálise do Código ADFGX O modo que será apresentado irá utilizar o método de ataque pela força bruta. Neste caso, inicia-se fazendo a contagem do número de palavras na mensagem cifrada. O número de palavras cifradas irá fornecer a quantidade de letras da palavrachave. No exemplo que foi dado, há sete palavras cifradas: AAAG AAAG GDDG GFGX GXAD AFF GDD
171
Devido à introdução do algarismo 1 na fileira superior. Codificação da palavra Information. 173 Naturalmente, a decodificação será dificultada, se forem usadas tabelas diferentes (com palavrassemente diferentes) para cada mensagem. 172
Portanto, a palavra-chave desconhecida deve ter sete letras (CANDOUR tem sete letras). Isto informa que há sete colunas na grade, a qual se preenche conforme a ordem das palavras cifradas, de cima para baixo. 1 A A A G
2 A A A G
3 G D D G
4 G F G X
5 G X A D
6 A F F
7 G D D
Obviamente, as colunas 6 e 7 (únicas sem o quarto caracter) não estão necessariamente nesta ordem, e portanto, podem ser intercambiadas (se necessário) apenas entre si. Como há 120 permutações possíveis das colunas 1 a 5, e duas possibilidades para as colunas 6 e 7, o ataque por força bruta deve realizar 240 permutações, para encontrar a ordem correta das letras. Como a grade original supostamente tem o alfabeto em ordem correta, o ataque 174 bruto pode ser feito em um tempo não muito longo. Naturalmente, se após algum tempo algum dígrafo for descoberto (como em tt, de attack, isto facilita a decifração do texto. 4.8 – A Criptoanálise do Código ADFGVX Tome-se o exemplo dado anteriormente,
cujo criptograma final é: VDGVVDDVDDGXDDFDAADDFDXG Se o criptoanalista não conhece o método de codificação, ele observa o criptograma. A primeira coisa que percebe é que há somente seis letras envolvidas: A, D, F, G, V, X. Em seguida ele conta as letras (24, no total), de onde deduz que uma grade 4x6 ou uma 6x4 possam ter sido usadas, e que a palavra-chave deve possuir quatro ou seis letras.
174
Este ataque consiste em testar todas as 240 possibilidades de distribuição de letras dentro da grade, até encontrar o texto claro. Note-se que não há necessidade de conhecer a palavra-chave.
Para uma transposição colunar usando uma palavra-chave de seis letras, o criptograma pode ser colocado com 96 possibilidades (6!) de distribuição dentro da grade. Para criptogramas usando o método do “papel e lápis”, a necessidade de rapidez (aliada à lei do menor esforço) conduz à hipótese de que a palavra-chave deve possuir apenas quatro letras. O analista conta em seguida a quantidade de dígrafos do criptograma, e as suas transposições: VD – 02 GV – 01 DV – 01 DD – 03 GX – 01 FD – 02 AA – 01 XG – 01
DV – 03 VG – 00 VD – 02 DD – 03 XG – 01 DF – 00 AA – 01 GX – 01
A hipótese inicial é a de que as letras mais frequentes sejam representadas pelos dígrafos DD e DV (supondo correta a transposição). Em seguida. o criptograma é colocado dentro de uma grade 6x4 tanto na leitura horizontal quanto na leitura vertical, o que resulta em:
Supondo que foi usada a palavra-chave de quatro letras, o criptograma pode ser colocado com 24 possibilidades (4!) de distribuição dentro da grade.175 Seguindo as grades acima, podem ser feitas leituras horizontais ou verticais, o que resulta em VDGV ou VVDDAV (e demais leituras) e VDDD ou VDGVVD (e demais leituras). O criptograma apresenta uma frequência maior para os conjuntos DD e DV, e as duas grades acima apresentam três vezes o dígrafo DD. Ele deve representar, então, uma das três letras mais freqüentes em inglês, as letras e t a.176 O criptoanalista deve então 175
Supondo que o analista conheça o processo de cifração, como a maioria das palavras de quatro letras em inglês (originalmente, a criptoanálise seria feita sobre o idioma alemão, com as correspondentes adaptações na análise) possui no máximo duas vogais, possivelmente na segunda e na quarta posição (a palavra CASE, por exemplo), isto reduz as possibilidades de análise. Como a palavra-chave é recolocada em ordem alfabética, isso indica que, possivelmente, a segunda ou quarta coluna se transforma em primeira. Supondo igualmente que a palavra-chave inicie por uma consoante, a segunda ou terceira devem ser vogal. É o mais comum, em palavras de quatro letras em inglês. 176 Uma falha fatal deste código é que letras iguais são codificadas usando dígrafos iguais.
testar essas letras sucessivamente. Uma delas é representada por DD (ou DV), e viceversa. Por surgirem três vezes cada uma na contagem, e sendo a mensagem muito curta, elas devem surgir como letra e dígrafo (e ee t tt a aa). Ao testar as possibilidades, o criptoanalista encontra as possíveis seqüências: atta; taat; ette; teet; aeea; eaae. Dígrafos comuns em inglês são ee e tt, mas não aa. Além disso, a palavra mais próxima do contexto é atta (de attack). Substituindo no criptograma, fica: VDGVVDDVDDGXDDFDAADDFDXG DVDD DD DD a t t t No criptograma, VD deve ser a transposta de DV. Refazendo, fica: VDGVVDDVDDGXDDFDAA DDFDXG DV DVDVDD DD DD a a a t t t e reagrupando: GVGX DVDDDDDV a t t a
FDAAFDXG DVDD a t
(Se a palavra é attack, a construção deve ser attack at. Isto completa o total de letras – três – para a e para t). Restam os dígrafos GV, GX, FD, AA, XG (como FD surge duas vezes, e DF apenas uma vez, ele talvez não tenha grande frequência). Continuando: A introdução de algarismos na grade não melhora significativamente a criptografia. O que interessa é a quantidade de algarismos usados na mensagem, que talvez não ultrapassem 20% da maioria do total de letras (16,6% na mensagem attack at 10 pm). Quando os algarismos indicam horários, há dois sistemas possíveis, o de 12 e o de 24 horas. O uso do sistema de 12 horas, o mais comum, obriga a introduzir na mensagem as letras am (ante-meridien) ou pm (post-meridien). Supondo um ataque noturno, será usado pm. Nas duas grades anteriores, em qualquer leitura surgem as letras FDXG e DXAG, nas últimas fileiras, que sugerem uma indicação relativa a horários. Isto sugere também que a combinação certa surge da transposição correta das letras FDXG ou das letras DXAG. Entretanto, a leitura DV DD DD DV (a t t a) mostra a seqüência correta,
e como a segunda grade parece ser a correta, recolocando as letras, fica assim (supondo o uso do sistema de 12 horas): ADGX p m No criptograma: GVGX FDAAFDXG GVGX FDAFADGX DVDDDV DVDD a t a a t p m Até aqui já estão identificadas quatro letras, a t p m, (que correspondem a 66,6% da mensagem do exemplo). Posicionadas na grade à esquerda (em leitura horizontal) fica assim:
Reposicionando as letras das fileiras 3 e 5 na grade da direita segundo a ordem 3142, fica assim: F GFD AVXG e novamente: FGFD AVXGADGX DVDDDV DVDD a t a c k a t p m Restam, então, os dígrafos AV e XG, que indicam a hora do ataque a ser realizado. Se o sistema de 12 horas foi utilizado, o algarismo inicial indicador da hora pode ser 0 ou 1, no sistema de 12 horas, e de 0 a 9, na segunda posição. Entretanto, se o primeiro algarismo é 1, o segundo só poderá ser 0, 1 ou 2. Assim, AV pode ser 0, 1 ou 2, e XG pode ser de 0 a 9. Se AV = 1, XG pode ser 0, 1 ou 2 (dez, onze ou doze horas pm). Supondo um ataque diurno às 12 horas, provavelmente a mensagem diria at noon (em inglês, é como se costuma indicar meio-dia).177 Como se presumiu que o 177
Se fosse o caso, as letras o e n são respectivamente a quarta e a sexta letras mais freqüentes em inglês, o que, juntamente com o dígrafo oo, muito comum em inglês, facilitaria sobremaneira a sua decifração.
horário de ataque será noturno, o horário pode ser dez, onze ou doze horas (meia-noite). Neste último caso, talvez a mensagem contivesse a expressão: midnight. Em todo caso, somente o contexto da batalha deverá permitir deduzir a hora correta. Se várias mensagens puderem ser quebradas, o criptoanalista reconstitui com facilidade a grade ADFGVX original.178 *** Em resumo, a criptoanálise clássica se faz utilizando os seguintes métodos: • Análise de frequência; • Índice de Coincidência; • Teste de Kasiski.
178
Como comentário final, note-se que o criptoanalista não precisa descobrir qual é a palavra-chave, porque o deciframento pode se realizar sem ela.
PA R TE II
CAPÍTULO V CRIPTOGRAFIA COMPUTACIONAL 5.0 – Criptografia Computacional e Matrizes De acordo com Katzan, Jr:179 O termo “criptografia computacional” foi criado por Krishnamurty, que faz uma distinção entre a criptografia clássica, que ele denomina “criptografia de comunicação”, e as técnicas criptográficas aplicadas aos sistemas de informação, que ele denomina “criptografia computacional”.180 Krishnamurty caracteriza os sistemas baseados em computador e define brevemente as seguintes técnicas: esquemas aritméticos, multplicação/divisão, outros representativos (dígito com sinal, sistemas de resíduos, etc.), conversões de base, esquemas lógicos, e esquemas matriciais. Os métodos matriciais são particularmente significativos, pois uma considerável quantidade de trabalho é envolvida, o que dirige o próprio trabalho à computação automática. Se a mensagem (M) e a chave (K) são armazenadas como matrizes, e * é um operador de transformação adequado, então a codificação toma a forma: C=M*K onde C é o texto cifrado. Se K-1 é um operador de transformação inverso, então a decodificação toma a forma: M = C * K-1 Se a operação for a multiplicação de matrizes, a codificação será realizada do modo mostrado a seguir. Inicialmente, faz-se uma correspondência numérica com as letras do alfabeto: A B C D E F G H I J K L M NO P Q R S T U V W X Y Z 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Supondo que o texto a ser cifrado seja montanha, forma-se uma matriz 3x3, com a respectiva correspondência numérica:
179
KATZAN, Jr., 1977, p. 112. Nos sistemas antigos os algoritmos criptografavam letras e palavras (por substituição, transposição ou esteganografia). Os modernos sistemas computacionais cirptografam blocos de bits ou bytes. 180
Agora, seja C uma matriz qualquer 3x3 inversível:181
Multiplica-se agora a matriz da mensagem por C, obtendo M . C:
O criptograma final é: -2 55 39 19 01 20 05 25 22. A decodificação da mensagem cifrada é conseguida através da multiplicação pela inversa: (M.C) . C-1 = M , e através da transcrição posterior pela correspondência numérica. 5.1 – Matrizes com Alfabetos Arbitrários Em 1929 o matemático Lester S. Hill introduziu o processo de codificação por matrizes utilizando um alfabeto arbitrário. Por exemplo: A B C D E F G H I J K L MN O P Q R S T U V WX Y Z 04 08 25 02 09 20 16 05 17 03 00 22 13 24 06 21 15 23 19 12 07 11 18 01 14 10 Supondo que a mensagem clara seja stop bid, ela ficará assim, após ser inscrita em matrizes:
A seguir, X1 e X2 são inseridos em equações matriciais predefinidas (não podem ser escolhidas aleatoriamente):
181
C é denominada matriz chave para o código.
As equações matriciais computadas módulo 26 dão como resultado:
Sendo o criptograma final: CGKTASZS. Os métodos matriciais de criptografia são considerados praticamente invioláveis. 5.2 – A Lógica Matemática O final do século XIX apresentou enormes avanços na Lógica Matemática. Entre os anos de 1840 e 1910 os estudos de Georg Boole, Augustus de Morgan, Gotlob Frege e Giuseppe Peano lançaram os fundamentos dessa disciplina, os quais vieram a sofrer novos acréscimos posteriormente a 1910, com Bertrand Russel, Alfred North Whitehead, David Hilbert, Alfred Tarski e outros notáveis lógicos e matemáticos. E, de uma maneira inevitável, os conceitos trazidos por ela vieram influenciar profundamente a criptografia. 5.2.1 – Conceitos e Definições da Lógica Matemática182 A lógica matemática que veio a ser utilizada na criptografia possui sentenças indicadas por letras maiúsculas (A, B, C, etc); tais sentenças sofrem os efeitos de operadores lógicos (que as modificam), e que são usados nas chamadas operações lógicas. Os operadores lógicos são: AND, OR, NOT, NAND, NOR, XOR, XNOR, e as operações lógicas são representadas na tabela a seguir:183
182
Para maiores detalhes, veja-se: http://www.pucsp.br/~logica/. A operação de negação, identificada pelo símbolo ~ colocada antes de cada sentença, também pode ser indicada com uma barra sobre a mesma (ou sobre um conjunto de sentenças). Por exemplo: ou 183
então:
.
Para a realização de cada operação lógica utilizam-se as chamadas tabelasverdade, as quais indicam os resultados das aplicações dos operadores lógicos às sentenças. As tabelas-verdade relativas a cada operação são as seguintes (em cada tabela, o resultado pode ser verdadeiro (V), indicado pelo dígito 1, ou falso (F), indicado pelo dígito 0).
5.2.2 – Portas Lógicas Cada operação lógica pode ser simbolizada graficamente através das chamadas portas lógicas, sendo que atualmente existem dois símbolos para cada uma (a Norma ANSI e a Norma IEC). Circuitos lógicos capazes de realizar operações lógicas são seqüências de portas lógicas interligadas entre si, de forma a implementar uma equação lógica.
As equações lógicas são resolvidas através das operações da Álgebra Binária de adição, subtração, multiplicação e divisão. As portas lógicas obedecem às tabelas respectivas, sendo que a saída C (à direita) deriva diretamente das entradas A e B (à esquerda). Por exemplo, se uma porta E (AND) é utilizada, uma saída C=1 resulta unicamente se A=1 e B=1.
As operações binárias não oferecem dificuldade. Por exemplo, em uma operação de adição binária: 11010111 10011101+ 101101100 as operações são do tipo:
0+0=0 0+1=1+0=1 1 + 1 = 0 (e vai “um”) Uma operação matemática comum é a operação de módulo-m (mod m), que usa a aritmética modular, ou aritmética de relógio. Esta aritmética produz uma soma modular S1 + S2 mod (m). Por exemplo, em uma soma modular módulo-10 (com os algarismos de 0 a 9).
A soma é comutativa, ou seja, os algarismos podem ser intercambiados entre si, sem mudar o resultado. Por exemplo: 9 + 2 = 2 + 9 = 1; 8 + 5 = 5 + 8 = 3; etc184. A operação é dita fechada (possui a propriedade do fechamento), porque produz todos os algarismos. Veja-se um exemplo (com S1 = 4), para perceber como todos os algarismos são contemplados (há o fechamento): S1 S2 T 4 4 4 4 4 4 4 4 4 4
+0=4 +1=5 +2=6 +3=7 +4=8 +5=9 +6=0 +7=1 +8=2 +9=3
As operações com portas lógicas permitem que se realizem as funções de permutação ou distribuição (classicamente conhecida como transposição) e o de substituição. Ou então realizar as funções de difusão e confusão.185
184
A adição obedece à propriedade da comutatividade. Ou seja, a + b = b + a. Diz-se que a substituição acrescenta confusão à informação, e a transposição acrescenta difusão. A difusão visa eliminar a redundância existente na mensagem original, distribuindo-a pela mensagem cifrada (ou seja, visa esconder as propriedades estatísticas da mensagem). Já o propósito da confusão é tomar a relação entre a mensagem e a chave tão complexa quanto possível.
185
5.2.2.1 – Operações Lógicas Operações lógicas são operações com variáveis binárias (de base 2), cujos valores podem ser 1 (verdade) ou 0 (falso).186 Sejam a e b números binários. Serão usadas as operações lógicas mostradas a seguir: NOT a – O valor inverso do bit. Se o valor é 0, ele se transformará em 1, e se o valor for 1, ele se tornará 0. ( a) . a OR b – O resultado será 0 se os dois operandos são 0, e 1 nos outros casos. (a b) a AND b – O resultado será 1 se os dois operandos são 1, e 0 nos outros casos. (a b) a XOR b – O resultado será 0 se os dois operandos forem iguais, e 1 se eles forem diferentes. (a b) a b
a a b a b a b
0 0 1
0
0
0
0 1 1
1
0
1
1 0 0
1
0
1
1 1 0
1
1
0
A propriedade mais importante da operação XOR é: a b a = b
a,b.
Esta propriedade mostra que a operação XOR é reversível, o que é importante para a criptografia. Este é o motivo porque ela é muito usada em algoritmos criptográficos. Quando se faz operações lógicas com variáveis inteiras, se está na verdade, fazendo as operações bit a bit. Isto significa que cada bit da variável a passa pela operação com o bit correspondente da variável b. Por exemplo, sejam dois registradores de 8 bits, a = 1001.1100 e b = 0101.1010: a a b a b a b
(não A) (a ou b) (a e b) (a XOR b)
= = = =
0110.0011 1101.1110 0001.1000 1100.0110
Outra operação lógica de grande importância na criptografia é a rotação (também chamada shift register – registrador de deslocamento. Esta operação desloca os bits de uma variável para a direita ou para a esquerda. Há dois tipos de rotação: a circular e a não-circular. A rotação circular considera a variável como sendo conectada nas extremidades, de maneira que um bit saído de um lado da variável retorna ao outro lado. Na rotação não-circular um bit saindo da variável é eliminado, e zeros são colocados nas posições vagas. Os exemplos a seguir são de uma rotação circular e de uma rotação não-circular, com dois deslocamentos em cada uma.
186
Ou então: V (verdadeiro) ou F (falso).
Representa-se a rotação para a direita não-circular pelo símbolo ». A rotação não-circular para a esquerda é «. A rotação circular para a direita será , e para a esquerda será . À esquerda do símbolo coloca-se o registrador a ser modificado. À direita do símbolo coloca-se o número de bits a serem deslocados. Alguns exemplos ilustrarão este conceito. Para a = 0100.1101, tem-se que: a«3 a»2 a 1 a 5
= = = =
0110.1000 0001.0011 1001.1010 0110.1010
Basicamente, o shift register é um tipo de circuito lógico seqüencial em que uma cascata ou cadeia de bits fica armazenada. Em operação, esta cadeia específica vai se deslocando: à medida que um bit entra na cadeia, o da extremidade oposta sai da cadeia, voltando ou não para o início desta (se não volta, zeros são introduzidos).187 5.2.3 – O Código ASCII O advento dos computadores e a necessidade da comunicação realizada entre eles difundiu o conhecimento dos códigos necessários a esta comunicação. Esta comunicação entre computadores é realizada utilizando códigos públicos nos quais o aspecto do segredo está completamente ausente. Os computadores, para se comunicarem entre si (ou para aceitarem os comandos do operador) utilizam um código chamado ASCII – American Standard Code of Information Interchange (Código Americano Padrão para Intercâmbio de Informações).188 O Código ASCII, que surgiu com os primeiros computadores,189 usa uma tabela de caracteres ou alfabeto binário (composto pelos dígitos 0 e 1; a menor unidade de informação, o bit, tem este significado: binary digit). Um conjunto de sete bits (quatro mais três) forma cada caracter ASCII. Por exemplo, o caracter a é formado pelos dígitos 01100001, e o caracter A é formado pelos dígitos 01000001 (note-se a diferenciação entre letras minúsculas e maiúsculas).190 Por usar apenas sete bits, a tabela ASCII tem somente 128 (ou 27) caracteres. Desses 128 caracteres, 33 são caracteres de controle não imprimíveis, usados para 187
Este é um exemplo de rotação não circular. Veja-se nos Apêndices. 189 Foi desenvolvido no início da década de 1960, no século passado. 190 O código ASCII para cada número, letra ou função de controle é constituído de um grupo de 4 bits e outro de 3 bits. Apesar de cada caracter apresentar oito dígitos, apenas sete são significativos. 188
controle e processamento do texto (alguns deles já não são utilizados), e 94 são caracteres imprimíveis (ou seja, são caracteres de texto – na tela ou na impressora). Com exceção do caracter de espaço, o resto é composto por caracteres imprimíveis. Além da representação binária, cada caracter pode ser representado também na forma decimal e na forma hexadecimal.191 Por exemplo, o caracter “%” tem a seguinte representação (binária, hexadecimal, decimal): 0010 0101
37
25
%
A ordem de leitura dos bits na representação binária é da direita para a esquerda; o primeiro dígito zero à esquerda (na realidade, o último), é não significativo. Assim, apenas sete bits entram na composição do caracter. A transformação binária para decimal encontra o valor representado, como mostrado a seguir (1010010): 1.20 + 0.21 + 1.22 + 0.23 + 0.24 + 1.25 + 0.26 = 1 + 0 + 4 + 0 + 0 + 32 + 0 = 37 A operação inversa, que é a conversão de um número decimal no seu equivalente binário, é uma operação chamada codificação. Assim, um número decimal pode ser expresso como um código binário ou número binário. O sistema numérico binário é conhecido como código binário puro. Este nome o diferencia de outros tipos de códigos binários. Em algumas tabelas ASCII, o código binário é invertido. Para determinar o código ASCII de um número, letra ou controle, localiza-se na tabela o dado desejado, que são os códigos de 3 e 4 bits associados com a coluna e com a linha, respectivamente. Por exemplo, a letra L é 1001100 (100 1100). À medida que o uso dos computadores foi se disseminando, a necessidade dos diversos idiomas mundiais (acentos, caracteres especiais, etc.) mostrou que esta quantidade de caracteres era insuficiente, e com isso novos códigos tiveram que ser desenvolvidos. O código ASCII foi aumentado, incorporando novos caracteres (este código é chamado ASCII completo ou ASCII estendido, e possui 256 caracteres).
191
A forma hexadecimal usa a base 16, sendo que as bases binária e decimal são, respectivamente, 2 e 10.
Tabela de códigos ASCII O código ASCII para cada número, letra ou função de controle é constituído de um grupo de 4 bits e outro de 3 bits. A tabela abaixo mostra a arrumação destes dois grupos e a seqüência numérica. O grupo de quatro bits está a direita, e o bit “1” é o bit menos significativo (LSB). Observe-se como estes grupos são arranjados em linhas e colunas na tabela ASCII.
A formação de uma rede mundial de computadores (a WEB, ou Internet) com sites em idiomas de todo o mundo (com seus caracteres específicos) obrigou a que se criasse uma tabela única que pudesse suprir todas as necessidades. Foi então criada a tabela chamada Unicode (UTF-8), que suporta cerca de um milhão de caracteres.192 5.2.4 – O Código BCD Este é um código especial, chamado Decimal Codificado em Binário (Binary Coded Decimal – BCD). Ele combina algumas das características dos sistemas numéricos binário e decimais. O código BCD é um sistema de representação dos dígitos decimais desde 0 até 9 com um código binário de 4 bits. Ele usa o sistema de pesos posicionais 8421 do código binário puro. O código 8421 BCD e os equivalentes decimais são mostrados na tabela abaixo. Assim como com o binário puro, pode-se converter os números BCD em seus equivalentes decimais simplesmente somando os pesos das posições de bits onde aparece “1”.
192
O Unicode fornece um único número para cada caractere, não importando a plataforma, o programa ou o idioma. Com o sistema Unicode, um site pode ser visualizado em qualquer lugar do mundo, sem nenhum problema.
Código BCD Observe-se que existem apenas dez códigos válidos. Os números binários de quatro bits representando os números decimais de 10 até 15 são inválidos no sistema BCD. Para representar um número decimal em notação BCD, substitui-se cada dígito decimal pelo código de quatro bits apropriados. Por exemplo, o inteiro decimal 834 em BCD é 1000 0011 0100 (invertendo: 0001 1100 0010): (0.20 + 0.21 + 0.22 + 1.23) = 8 (1.20 + 1.21 + 0.22 + 0.23) = 3 (0.20 + 0.21 + 1.22 + 0.23) = 4 Pelo processo inverso se converte um número BCD em seu equivalente decimal. Por exemplo: 0110 0010 1000,1001 0101 0100 = 628,954. Este método de representação também se aplica as frações decimais. Por exemplo, a fração decimal 0,764 é 0,0111 0110 0100 em BCD. De novo, cada dígito decimal é representado pelo seu código equivalente 8421, com um espaço entre cada grupo. Cada dígito decimal é representado pelo seu código BCD 8421 equivalente. Um espaço é deixado entre cada grupo de quatro bits, para evitar confusão do formato BCD com o código binário puro. O código BCD é menos eficiente do que o código binário puro, porque são usados mais bits para representar um número decimal em BCD que em notação binária pura. Por exemplo, o número decimal 83 é escrito como 1000 0011. Em código binário puro, usam-se apenas 7 bits para representar o número 83. Em BCD, usam-se 8 bits. Operações aritméticas com números BCD também consomem mais tempo e são mais complexas do que com números binários puros. Com quatro bits de informação binária, pode-se representar um total de 24 = 16 estados diferentes, ou os números decimais equivalentes (de 0 até 15). No sistema BCD, seis destes estados (10 a 15) são desperdiçados. Enquanto que a conversão de decimal para BCD é simples e direta, a conversão de binário para BCD não é direta, porque uma conversão intermediária deve ser realizada antes. Por exemplo, o número 1011,01 convertido no seu equivalente BCD.
Primeiro o número binário é convertido para decimal: 1011,012 = (1x23)+(0x22)+(1x21)+(1x20)+(0x2-1)+(1x2-2) =8+0+2+1+0+0,25 = 11,2510 Em seguida, o resultado decimal é convertido para BCD. 11,2510 = 0001 0001,0010 01012 Para converter de BCD para binário, as operações anteriores são invertidas. Por exemplo, o número BCD 1001 0110.0110 0010 0101 é convertido no seu equivalente binário: 1 - o número BCD é convertido para decimal. 1001 0110.0110 0010 0101 = 96,625 2 - o resultado decimal é convertido para binário
Como o número decimal intermediário contém uma parte inteira e uma parte decimal, cada parte é convertida como já visto. A soma binária (inteiro mais fração) 1100000,101 é equivalente ao número BCD 1001 0110,0110 0010 0101. 5.2.5 – Paridade No código ASCII de 7 bits, um oitavo bit pode ser usado como bit de paridade para determinar se o caracter foi transmitido corretamente. O valor deste bit é determinado pelo tipo de paridade desejado. Paridade par significa que a soma de todos os bits “um”, incluindo o bit de paridade, é um número par. Por exemplo, se G é o caracter transmitido o código ASCII é 1000111. Desde que quatro bits “um” estão no código, o bit de paridade é 0. O código de 8 bits seria escrito 01000111. Paridade ímpar significa que a soma de todos os bits “um” é um número ímpar. Se o código ASCII para G fosse transmitido com paridade ímpar, a representação binária seria 11000111.
5.2.6 – Bits e Bytes O bit é a menor unidade de informação, geralmente representado pelos algarismos 0 ou 1, na linguagem binária de base 2. Um conjunto de oito bits forma uma palavra, chamada byte. Um conjunto de oito bits é também chamado octeto. A moderna criptografia prefere utilizar a linguagem binária; uma tabela de substituição binária é construída, pela qual cada letra é transformada em um número de cinco dígitos binários. Em seguida, aplicam-se operações lógicas sobre os grupos de bits por meio de um algoritmo de transformação (translação). A Cifra de Bacon, vista anteriormente, pode ser considerada como um exemplo de codificação binária (apenas duas letras são usadas para a formação dos grupos), e pode ser substituída pelos algarismos 0 e 1.193 Como os grupos são formados por cinco caracteres, considera-se a cifra como sendo de 5 bits. A tabela a seguir mostra a relação binária na Cifra de Bacon. Letra Grupo Binário A aaaaa 00000 B aaaab 00001 C aaaba 00010 D aaabb 00011 E aabaa 00100 F aabab 00101 G aabba 00110 H aabbb 00111 I/J abaaa 01000 K abaab 01001 L ababa 01010 M ababb 01011
Letra N O P Q R S T U/V W X Y Z
Grupo Binário abbaa 01100 abbab 01101 abbba 01110 abbbb 01111 baaaa 10000 baaab 10001 baaba 10010 baabb 10011 babaa 10100 babab 10101 babba 10110 babbb 10111
Como os caracteres ASCII podem ser substituídos pelos seus equivalentes binários, é fácil deduzir que operações binárias podem ser implementadas para conseguir a difusão e a confusão. O exemplo a seguir mostra como uma seqüência de bits pode ser transformada, por transposição e por substituição.
A transposição pode resultar de uma regra qualquer que foi adotada; quanto ao grupo de caracteres substituídos, ele resulta de uma soma lógica com um valor determinado (00110101).
193
O que lembra o código BCD utilizado em computadores.
5.2.7 – Compressão de Dados Binários194 A compressão de dados é o ato de reduzir o espaço ocupado por eles em um determinado dispositivo. Essa operação pode ser feita por meio de variados algoritmos de compressão, reduzindo a quantidade de bytes para representar um dado, seja ele uma imagem, um texto ou um arquivo qualquer. Comprimir dados também permite retirar a redundância, representada por informações iterativas que precisam ser eliminadas. Isso se consegue por meio de uma regra chamada de código ou protocolo, que quando seguida, elimina os bits redundantes de informações, de modo a diminuir seu tamanho nos arquivos. Por exemplo, a sequência AAAAAA que ocupa 6 bytes, poderia ser representada pela sequência 6A, que ocupa 2 bytes, economizando 67% de espaço. Comprimir os dados ajuda também a economizar espaço em dispositivos de armazenamento (como discos rígidos) ou mesmo a ganhar desempenho operacional. 5.2.7.1 –
Classificação dos Métodos de Compressão
Há várias formas de se classificar os métodos de compressão de dados, mas a mais conhecida classifica pela ocorrência ou não de perda de dados durante o processo. 5.2.7.1.1 – Métodos de Compressão por Perdas de Dados 1. Compressão sem perdas (Lossless): Esta forma diz que um método de compressão é sem perdas se os dados obtidos após a descompressão são idênticos aos dados que se tinha antes da compressão. Este método é utilizado sempre que não possam ocorrer perdas de dados que acarretem o não funcionamento de um software ou dispositivo de hardware. 2. Compressão com perdas: (Lossy): quando a situação permite que perdas de dados poucos significativos possam ocorrer. É o caso, por exemplo, dos arquivos analógicos como fotos, áudios e filmes, em que perdas pequenas não chegam a ser percebidas pelo olho ou ouvido humano. Nesses casos, os dados podem ser comprimidos de forma a omitir tais detalhes.195 Assim, os dados obtidos após a descompressão não são idênticos aos originais, pois "perderam" as informações irrelevantes.
194
Este tema é dado aqui resumidamente mais a título de ilustração, por interessar mais à engenharia elétrica e de telecomunicações. 195 Sons de frequências muito altas ou muito baixas, detalhes sutis como diferenças de cores entre duas imagens do mesmo tipo, movimentos rápidos que não podem ser acompanhados, são detalhes que podem ser omitidos sem que se perceba a sua ausência.
CAPÍTULO VI SISTEMAS DE CRIPTOGRAFIA 6.0 – Criptografia Simétrica e Assimétrica A criptografia moderna pode ser agrupada em famílias: as mais comuns incluem os sistemas simétricos (DES e AES, p. ex.) e os sistemas assimétricos (RSA, p. ex.). Outras famílias incluem o algoritmo utilizado (o ECC – Elliptic Curve Criptography, p. ex.). Assim também com relação ao uso das chaves, a criptografia moderna pode ser classificada em dois sistemas: • •
O sistema de Criptografia simétrica. O sistema de Criptografia assimétrica.196
Na criptografia assimétrica, existem duas chaves, a chave pública e a chave privada. A chave de ciframento é publicada ou tornada acessível aos usuários, sem que haja quebra na segurança. Dessa forma, cada usuário tem uma chave de ciframento, de conhecimento público, e outra de deciframento, secreta. Se um usuário A deseja mandar uma mensagem para um usuário B, ele utiliza a chave de ciframento pública PB e envia a mensagem para B, este de posse de sua chave de deciframento secreta SB decodifica a mensagem. A criptografia simétrica ou criptografia de chave simétrica é utilizada para prover a segurança das informações. Nesta técnica, uma mesma chave é compartilhada entre o emissor e o receptor, sendo utilizada para cifrar e decifrar a mensagem.197 Muda apenas a forma como são utilizadas as chaves. Quanto à mensagem, não contém qualquer parte da chave e não sofre alteração em seu teamanho.198 Os algoritmos de ciframento e de deciframento são os mesmos. Assim, pode-se garantir a confidencialidade da mensagem, porque somente o emissor e o receptor têm conhecimento da chave secreta. Ambos os sistemas usam algoritmos e chaves próprias. As chaves de ambos os tipos devem permanecer secretas; quanto aos algoritmos, podem ser tornados públicos (e geralmente o são). Um algoritmo é tanto mais poderoso e eficiente quanto melhor for a utilização que faz da chave e quanto mais resistente for à criptoanálise. Como não existe um método matemático capaz de determinar a segurança de um algoritmo, o melhor modo de testar esta segurança é exatamente expondo-o às técnicas criptoanalíticas. Há soluções que utilizam as técnicas simultaneamente; neste caso, a criptografia assimétrica é usada para o estabelecimento da comunicação segura inicial e para a troca 196
Existem também algoritmos que utilizam uma combinação dos dois tipos de criptografia; são chamados de algoritmos híbridos. 197 A chave de cifragem pode ser idêntica à chave de decifragem, ou pode existir uma transformação simples entre elas. Geralmente costuma-se usar uma única chave, compartilhada por emissor e receptor (ou destinatário) da mensagem. 198 A criptografia simétrica define uma única chave e utiliza um algoritmo que usa esta chave para cifrar e decifrar a mensagem.
de uma chave simétrica, a qual será utilizada para a comunicação restante. A vantagem desta solução reside na diminuição da carga computacional, uma vez que a criptografia assimétrica exige maior esforço computacional em comparação com a criptografia de chave simétrica. 6.1 – Criptografia por Chave Simétrica ou Chave Secreta A criptografia simétrica usa os chamados algoritmos de chave simétrica (ou Sistemas de Chave Simétrica; Criptografia de Chave Única; ou Criptografia de Chave Secreta), que são uma classe de algoritmos que usam chaves criptográficas relacionadas para a operações de cifragem ou decifragem.199 Se há um emissor e vários receptores, ou se há toda uma rede de vários emissores e receptores interligados entre si, isto traz um problema. Cada um dos componentes da rede deve estar de posse de uma chave que lhe permita receber e transmitir mensagens codificadas entre si ou para a central emissora. Para que esta se comunique com os vários receptores, cada um deve possuir uma chave individual. Mas reside aí um problema: o problema da distribuição segura das chaves. Toda a segurança do sistema fica prejudicada, se uma destas chaves cair na posse de um agente inimigo. Antes que se veja como foi resolvido este problema, a criptografia por chave simétrica será vista em maiores detalhes.
Sistema de criptografia simétrica No sistema mostrado, tem-se que: • • • • •
199
E é o algoritmo de encriptação. D é o algoritmo de desencriptação. K é a chave secreta. m é o texto puro. c é o texto criptografado.
Outros termos para criptografia de chave simétrica são: criptografia de chave secreta; criptografia de chave única; criptografia de chave compartilhada; criptografia de uma chave; criptografia de chave privada.
Atualmente, o intenso uso de computadores exige que cada um possua uma uma chave secreta que possa ser utilizado para criptografar um pacote de informações, antes que esse seja enviado pela rede a um outro computador. A chave simétrica exige que se saiba quais computadores irão se comunicar, de modo que seja possível instalar a chave em cada um deles.200 6.1.1 – Características dos Algoritmos de Chave Simétrica 1. Velocidade: Os algoritmos de chave simétrica em geral possuem um menor custo computacional do que os algoritmos de chave assimétrica. Na prática, isto quer dizer que um bom algoritmo de chave assimétrica pode ser centenas ou milhares de vezes mais lento do que um algoritmo de chave simétrica de qualidade. 2. Segurança: Este sistema é tanto ou mais seguro quanto mais segura for a própria chave e a forma como ela é guardada ou passada para o destinatário legítimo. 3. Limitações: como já foi dito, a desvantagem dos algoritmos de chave simétrica é a exigência de uma chave secreta compartilhada, com uma cópia para cada parte, emissor e receptor. Como as chaves podem ser descobertas, é absolutamente necessário que elas sejam mudadas freqüentemente, e mantidas seguras durante o seu uso. Essa exigência de escolher, distribuir e armazenar chaves sem erro e sem perda é conhecida como gerenciamento de chave. Para garantir uma comunicação segura entre um grupo de n pessoas, é necessário criar um total de n(n-1)/2 chaves. Como os algoritmos assimétricos são mais lentos, eles são utilizados no início de uma sessão para distribuir chaves simétricas (a chave simétrica é gerada quase sempre em tempo real). A partir daí são usados os algoritmos de chave simétrica, de maior velocidade.201 6.1.2 – Técnica de Memória-Chave Em 1969, R. O. Skatrud apresentou a técnica de memória-chave. Este método usa duas memórias-chave e uma memória-endereço. A sincronização é feita através da memória-endereço, que é usada para selecionar palavras-chave a partir da memória-chave. Um “seletor de endereço” para a memória-endereço é a primeira informação a ser transmitida em uma mensagem. Inicialmente, dois endereços, um para cada memória-chave são selecionados. Os dados a serem codificados/decodificados são primeiro operados através de um OR exclusivo (XOR) com o conteúdo da primeira memória-chave e então operadas também através de um OR exclusivo com o conteúdo da segunda memória-chave. Assim, cada caracter é transformado duas vezes. Depois que cada caracter é processado, o endereço da memória-chave é incrementado.202
200
Alguns exemplos de algoritmos simétricos: Twofish, Serpent, AES, Blowfish, CAST5, RC4, 3DES, IDEA. 201 Os algoritmos de chave simétrica não podem ser usados para finalidades de autenticação. Para isso, geralmente são usadas funções de hash (por exemplo MD5 – tudo será visto mais à frente). 202 A segurança deste sistema depende do tamanho das memórias-chave e da frequência na qual as memórias-chave e a memória-endereço são alteradas.
Uso das memórias-chave e endereço 6.1.3 – Método da Chave Infinita Ao contrário do método anterior, que apresenta uma chave que se repete após um número fixo de caracteres, no método Carroll-McLelland (apresentado em 1970) a chave é “infinita”. Este método reduz as exigências de armazenamento necessárias ao uso da “chave curta”. Ele usa os números aleatórios gerados por uma senha de seis dígitos como uma semente. A senha é estabelecida através do procedimento de identificação e autorização. Opera através de chaves aleatórias e OU exclusivos com os caracteres de uma mensagem do texto claro, como no código de Vernam. Os blocos de chaves aleatórias são gerados assim: 1. A senha de seis palavras é usada como a semente inicial S0. 2. A fila de sementes S1, S2, ... , SL é gerada pelo uso de um gerador congruente multiplicativo misto convencional da forma: Si + 1 = aSi + C mod (m) onde a = ± 3 (mod 8), e é um valor próximo a a = 2b/2. (m = 2b , onde b é o comprimento em bits da palavra do computador.) Um valor de C< a , e relativamente primo a m, foi selecionado. L determina o comprimento da fila de sementes; foi usada uma variação de 16 ≤ L ≤ 79. 3. A fila de chaves de números aleatórios é gerada pelo uso do método congruente aditivo onde
Xi + 1 = Xi + Xi – L (mod m) X1, X2, … , XL
é a fila de sementes S1, S2, … , SL. O período de uso de uma fila de sementes (N) é computado somando-se 2K aos bits de ordem inferior K de SL ; a variação é 2K ≤ N ≤ 2K + 1 Assim que as chaves aleatórias são geradas, o processo é repetido usando SL como semente, ao invés de S0. Por esta razão, qualquer número de caracteres pode ser codificado. Os mesmos problemas de distribuição de chave existem no nível assimétrico, mas eles receberam uma solução mais satisfatória. *** Os algoritmos simétricos (criptografias por chave simétrica) podem ser subdivididos em algoritmos de fluxo (cifras de fluxo, cifras em cadeia ou cifras contínuas) e algoritmos em bloco (ou cifras por blocos). 6.1.4 – Algoritmos por Cifras de Fluxo203 As cifras de fluxo (ou cifras em cadeia) operam em unidades menores, geralmente bits, o que as torna bem mais rápidas. Elas cifram os bits (ou bytes) da mensagem um a um. Elas geram uma seqüência de bits que será usada como chave, conhecida como chave de fluxo (keystream), a partir de uma chave (ou senha) inicial. A encriptação ocorre pela combinação do texto plano com a keystream através de operações XOR,204 como mostrado na figura.
O esquema de codificação/transmissão e recepção/decodificação é o seguinte:
203
Cifras de Fluxo; ou Cifradores de Fluxo (do inglês Stream-cipher ou state cipher), são designações alternativas. 204 Cada bit é combinado com um outro bit gerado em um fluxo pseudo-randômico, tipicamente em uma operação XOR
Na cifra de fluxo não é necessário ter um bloco completo para cifrar. Cifra-se o que se tem, no momento que desejar. São semelhantes aos antigos algoritmos de substituição, os quais permitiam cifrar letra por letra, e que não precisavam ser agrupadas para completar um bloco.205 As cifras de fluxo podem ser comparadas a um tipo de cifra (comprovadamente) inquebrável, a OTP (one time pad), que usa uma chave de fluxo206 de dígitos randômicos. A OTP, como se sabe, combina os dígitos randômicos com os dígitos que formam a mensagem, de forma a criar um texto cifrado absolutamente seguro. Sabe-se, contudo, que a chave deve ter pelo menos o mesmo comprimento que a mensagem. E como isto torna o sistema mais pesado, a OTP não é muito usada, exceto em aplicações críticas. A cifra de fluxo cria uma chave mais manejável, de um tamanho conveniente – por exemplo, 128 bits. Com base nesta chave, uma chave de fluxo pseudo-randômica é gerada, que é usada para cifrar o texto. Por outro lado, a pseudo-randomicidade traz um inconveniente, que é o da chave de fluxo não ser tão segura quanto a OTP. Na verdade, algumas podem ser completamente inseguras. As cifras de fluxo são muito usadas devido à sua velocidade e facilidade de implementação por hardware, principalmente em aplicações onde textos claros surgem em quantidade e de tamanho desconhecido, como, p. ex., nas conexões sem-fio. Uma vantagem das cifras de fluxo na criptografia militar é que elas podem ser geradas em uma caixa (box) separada sujeita a estritas medidas de segurança, e em seguida entregues a outros dispositivos menos exigentes, os quais farão as necessárias operações XOR.207 A segurança das cifras de fluxo depende de que certas precauções sejam tomadas, como nunca usar duas vezes a mesma chave, ou nunca usar encriptações para indicar autenticidade.208 Além disso, a chave de fluxo deveria ter um período bastante grande. Deveria também ser impossível recuperar as chaves de cifras ou o estado interno, a partir de uma chave de fluxo. 205
De fato, todos os algoritmos históricos são considerados como cifras de fluxo. Keystream. 207 Os softwares mais conhecidos de cifra por fluxo são: A5/1, A5/2, Chameleon, FISH, HC-128, Helix, ISAAC, MUGI, Panama, Phelix, Pike, RC4, Rabbit, Salsa, SEAL, SOBER, SOBER-128, WAKE, 20/12. O mais usado é a RC4. Os hardwares implementados para cifra de fluxo mais conhecidos são: Grain, MICKEY-128, Trivium. 208 Muitas cifras de fluxo provêm privacidade, mas não autenticidade; isso significa que a mensagem cifrada pode ser modificada, quando em trânsito. 206
A chave de fluxo também deve ser imune a padrões sutis que permitam distinguí-la do puro ruído randômico, nem pode ter padrões detectáveis que permitam correlacionar vários fluxos de modo a descobrir a chave. Curtos períodos de cifra de fluxo são preocupantes. Por exemplo, blocos de 64 bits como o DES podem ser usados para gerar um fluxo de chaves no modo OFB.209 Mas a se realimentação plena não é utilizada, o fluxo resultante tem um período de cerca de 232 blocos, em média, o que é muito curto para certas aplicações. Por exemplo, se a encriptação está sendo feita a uma taxa de 8 megabytes por segundo, um fluxo de período de 232 blocos se repetirá após meia hora. 6.1.4.1 – Tipos de Cifras de Fluxo210 A cifra de fluxo pode ser sincronizada ou auto-sincronizada. I – A cifra de fluxo sincronizada gera sucessivos elementos da chave de fluxo com base em um estado interno, o qual muda (é atualizado) de forma independente do texto claro ou da mensagem cifrada. O fluxo de dígitos pseudo-randômicos gerados combina com o texto claro para realizar o ciframento, ou com o texto cifrado para realizar o deciframento. Na forma mais comum, em que se usam bits, a combinação é feita através da operação XOR; esta operação é chamada de adição binária de cifra de fluxo. Na cifra de fluxo sincronizada, emissor e receptor devem seguir no mesmo passo. A adição ou remoção de dígitos da mensagem durante a transmissão faz com que a sincronização se perca. A restauração da sincronização pode ser feita introduzindo marcas em pontos regulares do texto cifrado, ou re-iniciando sistematicamente a transmissão. Dígitos corrompidos, entretanto, não se propagam para outras partes da mensagem, o que é útil nos casos de altas taxas de erros de transmissão. A principal vulnerabilidade da cifra de fluxo é que, para uma mesma mensagem, existe um único código associado. Isto permite que uma monitoração da rede que utilize softwares especialistas possa quebrar o sistema. Além disso, se um atacante conseguir mudar um dígito no texto cifrado, ele poderá detetar mudanças correspondentes nos bits do texto claro. II – A cifra de fluxo auto-sincronizada211 atualiza o seu estado baseada em dígitos prévios do texto cifrado. Podem ser usados N dígitos prévios do texto cifrado para computar a cifra de fluxo. Ou seja, o receptor sincroniza automaticamente com o gerador de chave de fluxo após receber N dígitos de texto cifrado. Isto torna mais fácil recuperar o sistema, se dígitos são perdidos ou agregados à mensagem. Qualquer erro afeta apenas esta parte de N dígitos da mensagem. Um exemplo de cifra de fluxo auto-sincronizada é chamada de modo de realimentação de cifra (cipher feedback mode – CFB). A implementação em hardware é freqüentemente feita usando os Registros de deslocamento de realimentação linear (Linear feedback shift registers – LFSRs), os quais podem ser analisados matematicamente com facilidade.
209
Ver item 6.1.5.1 – IV. Ver: http://en.wikipedia.org/wiki/Stream_cipher. 211 Ou cifras de fluxo assíncronas (assynchronous stream) ou cifra por auto-chave (ciphertext autokey – CTAK). A idéia da auto-sincronização foi patenteada em 1946. 210
Apenas o uso destes elementos, contudo, não garante uma boa segurança, por isto vários esquemas foram propostos para incrementar a segurança das LFSRs. Uma das solução propostas é o uso das LFSRs em paralelo, no que é chamado de funções de combinação não-linear (non-linear combining functions).
As saídas são combinadas pelo uso da função booleana binária de n-entradas (ninput). Como as LFSRs são inerentemente lineares, uma técnica para remover esta linearidade é conduzir suas saídas para uma função booleana não linear para formar um gerador de combinação (generator combination). Várias propriedades dessa função de combinação (combining function) são críticas para assegurar a segurança do esquema, como, por exemplo, evitar ataques de correlação (correlation attacks). Para evitar a regularidade de passo, uma técnica consiste em introduzir clocks irregulares, controlados pela saída de uma segunda LFSR. Este gerador inclui o stopand-go-generator, o alternating step generator e o shrinking generator. O primeiro consiste de duas unidades LFSRs. Uma é acionada (clocked) se a saída da segunda é “1”, caso contrário, ela repete a saída anterior. Esta saída é então combinada com uma terceira LFSR, que funciona (clocked) em um passo regular. No caso do shrinking generator, duas LFSRs são usadas, ambas com passo regular (both clocked regularly). Se a saída da primeira é “1”, a saída da segunda tornase a saída do gerador. Se a saída da primeira é “0”, a saída da segunda é descartada, e nenhum bit sai do gerador. Uma outra abordagem para aumentar a segurança de uma LFSR é passar o inteiro estado de uma simples LFSR por uma função de filtragem (filtering function) não-linear.
A operação de um gerador de cifra de fluxo em A5/1, uma cifra de fluxo em LFSR usada para encriptar conversações em celulares é mostrada abaixo.
6.1.4.2 – Comunicações Seguras de Dados O problema maior nos sistemas de comunicações de dados é assegurar-se de sua segurança. Os fatores que devem ser levados em conta são os seguintes: 1. 2. 3. 4. 5.
Qual o tipo de sistema utilizado: se ponto-a-ponto, se em rede, se em rede sem fio, etc. O método de transformação de segurança, ou seja, os dispositivos de hardware, o software, etc. O método de geração, transmissão e guarda segura de chaves. As senhas e as exigências de autorização. O tempo e o custo envolvidos.
Um método de segurança simples, mas funcional, é manter informações sigilosas somente em mídias de armazenamento portátil, como pen-drives, HDs externos, etc. As formas mais populares de segurança, contudo, dependem da criptografia. I. Sistema ponto-a-ponto (computador-a-computador): usa um dispositivo criptográfico separado para cada linha de dados. As unidades de transmissão/recepção sincronizam pontos de início de geração de chave por meio de informações contidas no cabeçalho da mensagem transmitida. Este método é conveniente quando se usa um pequeno número de linhas de comunicações. Deste modo os programas de computador não são afetados, e o custo total é minimizado. II. Sistema de rede: usa um único gerador de chaves para todos os usuários, e é usado para sistemas computador/usuário e/ou quando muitas linhas de dados estão sendo usadas. Nesse caso, o processo de geração de chaves deve ser estabelecido no
final de cada conexão de comunicações com um livro de códigos ou uma lista de variáveis de controle (senhas). Cada mensagem deve alcançar sincronização com senhas ou números-chave que são colocados no cabeçalho da mensagem transmitida. A sincronização se refere ao processo de coordenação das atividades de cada final da linha de dados. Quando se geram chaves aleatórias, por exemplo, as variáveis que governam o algoritmo de geração de números aleatórios devem ser introduzidas em ambos os sistemas. Usa-se em geral mais de um conjunto de variáveis, e esta informação é transportada de um lado para o outro por portadores ou pelo correio regular. Posteriormente, tudo o que uma mensagem precisa fornecer é um número de identificação do conjunto particular de variáveis que estão sendo usadas e um ponto inicial para o processo de geração de números aleatórios. Deste modo, a sincronização efetiva ocorre em duas diferentes ocasiões: uma vez quando o sistema é estabelecido, e uma vez para cada mensagem que é codificada/decodificada. 6.1.4.3 – Legitimidade da Mensagem Dos dois aspectos mais importantes no que se refere à comunicação segura de dados, o primeiro se preocupa em garantir a legitimidade mútua das partes. Para conseguir este objetivo, alguns sistemas foram implementados ainda na década de 1970. Os métodos desenvolvidos por Feistel-Notz-Smith (cf. Katzan, Jr.) baseiam-se no fato de que cada usuário possua uma única chave de código, e o computador central tenha um catálogo completo de usuários e suas chaves de código. Os métodos são os seguintes: I. Método do “aperto de mão” (Shake-hands) • • • •
O usuário estabelece sua identidade (U) no texto claro e a transmmite junto com a mensagem arbitrária (M) codificada com a sua chave. O computador usa a chave de U para decifrar a mensagem arbitrária. O computador anexa a sua própria mensagem arbitrária (N) a M, codifica-a usando a chave de U e transmite-a de volta a U. Assim que U recebe a mensagem, uma análise da mensagem M (conforme enviada e conforme recebida) verifica a identidade do computador para U. Na transmissão seguinte do usuário para o computador, a mensagem N é anexada à mensagem do usuário de modo que o computador pode verificar a identidade do usuário. II. Método da senha pré-estabelecida
Uma senha pré-estabelecida é inserida no bloco de dados que está sendo transmitido em forma codificada. No mais o processo é semelhante ao anterior, e a identidade do usuário deve ser estabelecida de modo que a mesma chave cifrada possa ser usada pelo computador. O computador usa a chave cifrada do usuário (que está em seu catálogo) para decifrar a mensagem e comparar senhas. A senha, que é usualmente trocada de um modo previsto, está contida em um catálogo de senhas.
III. Método da cifragem degrau Este método é utilizado para assegurar a continuidade contextual de blocos sucessivos de dados. Somente uma parte do bloco de dados é codificada de cada vez, e o sistema sobe efetivamente os degraus da mensagem. Pode se acomodar uma mensagem de qualquer tamanho, e os blocos de cifragem intermediários podem ser transmitidos individualmente ou isoladamente, dependendo das exigências de segurança do sistema.
Cifragem degrau 6.1.4.4 – Integridade da Mensagem O segundo aspecto mais importante da segurança de dados refere-se à verificação da integridade da mensagem. Neste caso, deve assegurar-se de que os dados não foram corrompidos durante a transmissão ou a criptografia. Existem duas maneiras de fazer isso. I. Através do Checksum (valor de verificação): este é um dos métodos mais antigos usados para se assegurar de que os dados estão corretos. Ele fornece também uma forma de autenticação, já que um checksum inválido sugere que os dados foram comprometidos de alguma forma. Um checksum pode ser determinado de duas maneiras. O checksum de um pacote possui um byte. Um byte é composto de 8 bits, e cada bit pode estar em dois estados (0e 1), levando a um total de 256 (28) combinações possíveis. Como a primeira combinação é igual a zero, o valor máximo de um byte é de 255. Neste caso, ocorre o seguinte: • •
Se a soma dos outros bytes no pacote a ser verificado é menor ou igual a 255, então o checksum contém aquele valor exato. Se a soma dos outros bytes for maior que 255, então o checksum é o restante do valor total após ter sido dividido por 256. Exemplo de cálculo de checksum:
Byte Byte Byte Byte Byte Byte Byte Byte Total Checksum 1 2 3 4 5 6 7 8 212 232 54 1151 / 256 4 x 256 1151 – 1024
135 244 15
179 80
1151 127
= 4,496 (arredonda-se para 4) = 1024 = 127
II. Através do Cyclic Redundancy Check (CRC): estes possuem uma concepção semelhante ao checksum, mas utilizam a divisão polinomial para determinar o valor do CRC, que geralmente é de 16 ou 32 bits. A vantagem do CRC é que ele é muito preciso. Se um único bit estiver incorreto, o valor do CRC estará correto. Tanto o checksum quanto o CRC são bons para prevenir eventuais erros na transmissão, mas fornecem pouca proteção a um ataque intencional aos seus dados. 6.1.4.5 – Os Algoritmos RC2212 e RC4 Os algoritmos RC2 e RC4 são funções para ciframento com chave de tamanho variável (variable-key-size cipher functions). Foram projetados por Ron Rivest, como alternativas ao DES, para rápida encriptação de grande volume de dados, sendo tão ou mais rápidos do que este.213 Podem ser mais seguros do que o DES devido à sua habilidade em usar chaves de comprimento longo (o que significa que podem ser menos seguros, se chaves curtas forem utilizadas). Ambos, RC2 e RC4 são muito compactos em termos de tamanho de código. O RC4 (Ron’s Cipher 4) foi criado por Ronald Rivest em 1987. No início foi mantido em sigilo, porque era propriedade da RSA Security. Tornou-se público em 1994. Ele é uma cifra de fluxo simétrica com chave de tamanho variável (variable-keysize symmetric stream cipher); ou seja, o RC4 é apenas uma forma de gerar bytes aleatórios a partir de uma chave de tamanho variável. Estes bytes são então usados para encriptar uma mensagem através da operação lógica XOR. O destinatário executa o RC4 como o remetente, obtendo os mesmos bytes aleatórios, podendo assim decifrar a mensagem. O RC4 é cerca de dez vezes mais rápido do que o DES em software. Sua principal vantagem é que ele é um algoritmo de fluxo, sendo um dos mais largamente usados. 6.1.4.5.1 – Expansão da Chave (KSA) no RC4 O RC4 recebe uma chave ch de nch bits, onde 1 nch um vetor S de 256 bytes, a partir da chave:
2048. Tem-se que gerar
S = (s0, s1, s2, ... , s255) 212 213
O algoritmo RC2 será visto à frente, por ser cifra de blocos. O RC2 é aproximadamente duas vezes mais rápido do que o DES, pelo menos em software.
Para tanto, utiliza-se o seguinte algoritmo: 1. Para i de 0 a 255, faz-se a.si := i 2. Seja o vetor de 256 bytes (2048 bits) K = (k0, k1, ... , k255) 3. Copia-se a chave ch para K bit a bit , repetindo-a quantas vezes forem necessárias para preencher K completamente. Por exemplo, se nch=100 copia-se a chave 20 vezes para K, e coloca-se os 48 primeiros bits de ch no fim de K para preenchê-lo. 4. j:=0 5. Seja t um byte. 6. Para i de 0 a 255 faz-se: a. j:=(j+si+ki) mod(256) b. t:=si c. si :=sj d. sj :=t Note-se que, na realidade, S é uma permuta dos números de 0 a 255, determinada pela chave. O algoritmo do RC4 (PRGA): Para gerar os bytes aleatórios tem-se o seguinte algoritmo: 1. i:=0 2. j:=0 3. Seja t um byte 4. Enquanto foram necessários bytes b aleatórios, faz-se: a. i:=(i+1) mod(256) b. j:=(j+si) mod(256) c. t:=si d. si :=sj e. sj:=t f . t :=(si + sj) mod(256) g. b:=st h. o byte aleatório será o b Note-se que o vetor S muda à medida que se vão gerando bytes aleatórios. Isto contribui para a força do algoritmo.
6.1.5 – Algoritmos por Cifras em Blocos214 Chama-se transformação de produto à aplicação sucessiva de códigos de substituição e transposição em que grandes blocos de dados podem ser transformados como uma unidade, aumentando deste modo o número possível de padrões de substituição e reordenação. As cifras por blocos processam blocos de informação de comprimento fixo de uma só vez, concatenando-os no final do processo.215 Neste caso, normalmente são usados blocos de 64 ou 128 bits.216
No caso da cifra da figura anterior, o tamanho do bloco é de 64 bits. Como o arquivo não é múltiplo de 64 bits, um enchimento (padding) é inserido no bloco 5. Cabeçalhos inseridos no arquivo cifrado devem informar qual foi o algoritmo usado, qual o tamanho de bloco e qual o tamanho real do arquivo, para que o padding possa ser descartado quando da desencriptação. Não é possível cifrar menos do que o tamanho de um bloco. Os algoritmos que operam com blocos efetuam operações de substituição e transposição simultaneamente. O seu processamento é consideravelmente mais lento do que o processo de cifras de fluxo.217 Por esta razão, a operação com blocos normalmente é um compromisso entre a eficiência da transmissão e a complexidade da implementação. As cifras em blocos são melhores para criptografar dados estáticos, quando já se sabe antecipadamente o tamanho e se pode dividir em blocos de M bits.
214
Cifra em Blocos; Blocos de Cifras; ou Cifrador de Blocos: do inglês Block-cipher, são usados como termos equivalentes. 215 A mensagem é partida em blocos do comprimento requerido. Cada bloco deve ser cifrado de cada vez, e o conjunto de operações matemáticas envolvendo a chave é repetido a cada bloco. 216 Normalmente são utilizados blocos de 64 bits; o algoritmo AES , aprovado pelo NIST em dezembro de 2001 usa blocos de 128, 192 ou 256 bits e chaves de 128, 192 ou 256 bits. Os algoritmos de chave simétrica raramente são usados sozinhos. 217 Por exemplo, com 64 bits, seria como operar 264 substituições de um alfabeto. O DES, por exemplo, é cerca de dez vezes mais lento do que o RC4.
6.1.5.1 – Operação das Cifras de Blocos218 Um problema que pode surgir com cifras em bloco é a existência de blocos repetitivos que acabam por criar um padrão. Para evitar o reconhecimento de padrões repetitivos (e para garantir a confidencialidade) usam-se alguns modos de operação de blocos de cifra, que se verão a seguir.219 I – Modo Livro de Códigos (Electronic Code Book - ECB) Este é o modo de operação mais simples. Por este método, cada bloco da mensagem original é dividida em blocos de tamanho adequado e cifrado isoladamente, para produzir os blocos da mensagem cifrada. No final, os blocos são concatenados na mesma ordem. Um bloco típico tem 64 bits, o que produz um livro de códigos de 264 entradas. Além disso, para cada chave possível existe um livro de códigos diferentes.
Cifração modo ECB
Decifração modo ECB A vantagem deste método é a simplicidade e a independência entre os blocos. Há algumas desvantagens, como, por exemplo: • • 218
Blocos de texto claro iguais produzem também blocos cifrados iguais, ou seja, o método não esconde o padrão dos dados. Assim, um criptoanalista pode começar a compilar um livro de códigos, ainda que não conheça a chave. Este modo de operação não acrescenta nada à confidencialidade proporcionada pela cifra.
Ver: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation. A maioria apenas confere confidencialidade; alguns proporcionam confidencialidade e autenticação. Alguns modos combinados, tais como CCM, EAX, GCM, IAPM e OCB garantem tanto a confidencialidade quanto a integridade da informação. 219
•
Há um outro problema, que a repetição de bloco (blocos idênticos da mensagem original vão produzir blocos cifrados idênticos), de onde um atacante ativo pode alterar parte de uma mensagem criptografada sem saber a chave e nem mesmo o conteúdo que foi modificado.220 II – Modo Encadeamento de Blocos (Cipher Block Chaining - CBC)
No modo de operação Cipher-Block Chaining - CBC (corrente de blocos), é feita uma operação entre cada novo bloco de texto claro com o bloco cifrado obtido na etapa anterior.221 Por esta forma, cada um dos blocos cifrados depende de todos os blocos de texto claro anteriores. A operação mais utilizada é o XOR com o bloco anterior; assim, os blocos iguais serão normalmente cifrados de forma diferente, desde que no mínimo um dos blocos anteriores seja diferente da mensagem. Entretanto, duas mensagens iguais serão mapeadas para os mesmos blocos e duas mensagens com início igual serão cifradas da mesma forma, até que ocorra a diferença. Para evitar esse problema, utiliza-se um vetor de inicialização distinto para cada mensagem. Também é utilizado um vetor de inicialização para iniciar o processo, já que não existe texto cifrado para o bloco inicial.
Cifração modo CBC
Decifração modo CBC O CBC é um dos modos de operação mais utilizados. Sua maior desvantagem é ser sequencial. Como não pode ser usado em paralelo (pois sempre depende do 220
Pode-se, por exemplo, interceptar uma transação bancária de transferência de saldo. A seguir, faz-se uma transferência de saldo de uma conta para a conta do atacante e intercepta-se a mensagem. Assim, pode-se identificar os blocos correspondentes ao destinatário e dessa forma substituir em todas as mensagens o destinatário pelo atacante. O modo ECB também pode fazer com que protocolos sem proteção de integridade se tornem ainda mais vulneráveis a ataques, como ataques de replay. 221 O CBC realimenta a cifragem do último bloco com o resultado das cifragens dos blocos anteriores (do bloco de texto plano com o texto cifrado antecedente).
resultado anterior), seu uso dificulta o processamento de blocos em paralelo, o que melhoraria o desempenho do método. O PCBC - Propagating cipher-block chaining (modo de operação corrente de blocos em propagação)222 foi projetado para propagar ou esparramar melhor que o CBC pequenas alterações no texto cifrado. As rotinas de cifragem e decifração são as seguintes:
O vetor de inicialização é
.
III – Modo Realimentação de Cifra (Cipher Feedback Block – CFB) Quando há necessidade de enviar mensagens de tamanho menor que um bloco, usa-se o método CFB, o qual trabalha com grupos (por exemplo, de 8 bits - um caracter). Neste modo, cada bloco de texto cifrado antecedente é codificado, e o resultado é combinado com o bloco de texto plano através do operador XOR para produzir o bloco cifrado atual.223 Também se utiliza um vetor de inicialização para iniciar o processo. Uma cifra de bloco operando no modo CFB não pode ser usada como um gerador de números randômicos. Com o Cipher Feedback um bloco de fluxo de chave é calculado cifrando-se o bloco de texto cifrado anterior.
Cifração modo CFB
222 223
É usado quase que exclusivamente nos algoritmos Kerberos e WASTE. Neste caso, a realimentação é feita sobre o grupo, utilizando-se também as operação XOR.
Decifração modo CFB IV – Modo Realimentação do Bloco de Saída (Output Feedback Block – OFB) O modo Output Feedback (OFB) transforma uma cifra de bloco num gerador de números pseudo-aleatórios. O texto cifrado realimenta a cifra de bloco e este processo é repetido para produzir um fluxo de bits pseudo-randômicos. O fluxo de bits é totalmente determinado pelo algoritmo, pela chave, por um vetor de inicialização e pelo número de bits que realimentam a cifra em cada etapa. Ele pode então servir para fazer uma operação XOR com o texto claro, a fim de produzir o texto cifrado, transformando efetivamente a cifra de bloco numa cifra de fluxo. Este modo é muito similar ao anterior, exceto pelo fato de que a quantidade de XOR com cada bloco de texto plano é gerada independentemente do bloco de texto plano ou do bloco de texto cifrado. O modo OFB gera o próximo bloco de fluxo de chave cifrando o bloco de fluxo de chave anterior:
Cifração modo OFB
Decifração modo OFB V – Modo de Operação Contador (Counter – CTR). Assim como o OFB, o CTR transforma a cifra de bloco numa cifra de fluxo. Ele cria o próximo bloco de fluxo de chave cifrando os valores sucessivos de um contador. Este contador pode ser qualquer função simples que produza uma sequência que só será repetida depois de um longo intervalo de tempo. Apesar dessa exigência, os contadores simples são os mais utilizados. O modo CRT possui características muito semelhantes às do OFB, porém permite um acesso randômico na decifração, e é comprovadamente seguro se a cifra de bloco também for segura.
Cifração modo CTR
Decifração modo CTR 6.1.5.2 – Proteção de Integridade e Propagação de Erro Os modos de operação das cifras de bloco mostrados não proporcionam qualquer proteção de integridade. Isto significa que um atacante, ainda que conheça a chave, pode modificar o fluxo de dados de acordo com as suas necessidades. Atualmente é sabido
que, sempre que houver uma cifragem de dados, é também essencial que se adicione uma proteção de integridade para garantir a segurança. Em operações seguras, o VI (vetor de inicialização) e o texto cifrado gerado através destes modos de operação deveriam ser autenticados com um MAC224 (ver item 11.3.2.6.1) que deve ser checado antes de se efetuar uma decifração. Antigamente era comum a discussão da propagação de erros dos modos de operação. Observou-se, por exemplo, que um erro em um dos blocos cifrados transmitidos resultaria num erro em apenas um dos blocos de texto claro recuperado se fosse usado o modo ECB, enquanto que no modo CBC o erro afetaria dois blocos.
Propagação de erro no modo CBC 6.1.5.3. – O Vetor de Inicialização – VI Com exceção do modo de operação ECB, todos os outros requerem um vetor de inicialização. Este vetor é uma espécie de bloco pequeno (dummy block) cuja função é inicializar o processo para o primeiro bloco. Além disso, ele adiciona um elemento randômico ao processo. O VI não precisa ser secreto, mas é importante que o mesmo VI não seja reutilizado com a mesma chave. Nos modos CBC e CFB, a re-utilização de VIs deixa vazar algumas informações. Nos modos OFB e CTR, VIs repetidos destroem totalmente a segurança. Já no modo CFB, o VI precisa ser gerado randomicamente e ser mantido em segredo, até que o primeiro bloco de texto claro esteja pronto para ser cifrado. *** A grande maioria dos algoritmos criptográficos atuais são cifras de bloco. As cifras de fluxo, que convertem o texto claro em texto cifrado bit a bit, são atualmente pouco pesquisadas e pouco utilizadas. A razão disso é que elas dependem de geradores randômicos de chaves que, apesar da aparente simplicidade, são difíceis de implementar através de software ou de hardware.225
224
MAC: Message authentication code. A partir da década de 1960 extensas pesquisas sobre segurança criptográfica por computador determinaram o surgimento de uma série de técnicas que usam uma combinação de lógica de hardware e de rotinas programadas (software). 225
6.1.5.4 – Sistema de Código em Blocos de Feistel-Notz-Smith Neste sistema, as substituições são realizadas sob o controle de uma chave de código, e as transposições são feitas seguindo uma seqüência fixa. A substituição, a transposição e uma adição módulo-2 são fatores do código de produto. Este é aplicado ao texto claro várias vezes, produzindo um bloco do texto cifrado do mesmo tamanho do texto claro original. Modo de operação (cf. Katzan, Jr.): 1. 2.
3. 4. 5. 6.
7.
A chave do código contém uma seqüência de número fixo de bits; esta é a chave que pode ser obtida a partir do arquivo ou tabela de chaves. O registrador de deslocamento contém as filas superior e inferior; a mensagem do texto claro é armazenada no registrador de deslocamento. A fila inferior do registro de deslocamento pode ser lida (para os registros C1 e C2 sem alterar o conteúdo do registrador de deslocamento). Os registros C operam sob o controle de bits na chave do código. Eles são movidos tanto diretamente para baixo ou para cima como um bloco. Os bits passam então por uma transformação não linear226 de modo que cada quatro bits de entrada podem ser convertidos em quatro bits de saída. Uma outra transposição é realizada – agora, quaisquer bits da mensagem podem ser transpostos. Por fim, os segundos 64 bits da chave do código são somados do módulo-2 para a mensagem, e o resultado é adicionado à metade superior do registrador de deslocamento (shift-register). A metade superior e a metade inferior do registrador de deslocamento são trocadas entre si e a chave do código é girada de uma posição. O processo completo é repetido tanto em número fixo como variável de vezes (chamados rounds – ou rodadas).227
Estes conceitos foram implementados em um sistema experimental de comunicações de dados pela IBM, sendo que o sistema em blocos era projetado em uma unidade de hardware chamada Lúcifer, anexada ao dispositivo terminal do computador. Uma versão de software da unidade de código permanece no computador, como um programa de código. Assim que a autorização adequada é verificada através do uso do arquivo de senhas, uma chave de código é selecionada a partir de um arquivo de chaves de código para uso pelo programa de código. 226
Atualmente, define-se as substituições como transformações não lineares, realizadas em S-Box, para garantir a confusão. Quanto às transposições, elas são realizadas por permutações nas P-Box, para garantir difusão. 227 Este método (atribuído a Horst Feistel), muito usado atualmente nas cifras simétricas, é baseado em rounds repetidos. Os bits a serem codificados são divididos em duas partes, P1 e P2. P1 fica inalterado, e P2 é adicionado a uma função misturada de sentido único f (variado por uma chave) de P1. Os dois resultados então são trocados (isto é chamado de um round). A chave p1 e a chave p2 são vetores do bit; “,” é um operador da concatenação e f é uma função (p1, p2 → p2’, p1) tanto que p2’ = p2 + f(p1,key). Desde que a saída do round tenha acesso ao valor P1, e sendo a adição uma operação reversível, então esta operação pode ser desfeita, para toda função f de um único sentido (one-way). Para decifrar rounds múltiplos, cada um é desfeito na ordem inversa (ou seja, para a decodificação, as chaves são aplicadas em ordem inversa). Após vários rounds (entre 8 e 64) de processamento, e se a chave for suficientemente longa, ataques pela força bruta podem se tornar inviáveis.
O sistema de códigos em blocos desenvolvido por Feistel-Notz-Smith está representado a seguir.
Sistema de código em blocos de Feistel-Notz-Smith 6.1.5.4.1 – Estrutura Genérica da Cifra de Feistel O diagrama a seguir mostra a estrutura genérica de uma Cifra de Feistel, um esquema que é usado na grande maioria das cifras de bloco modernas.228 228
A implementação de cifras em blocos pode ser feita utiliazando: rede Feistel (Feistel network); Key schedule; Product cipher; S-Box; P-Box; SPN (rede S-P).
A entrada é quebrada em dois blocos de mesmo tamanho, geralmente chamados de esquerdo (L - Left) e direito (R - Right), que são repetidamente operados em ciclos através do algoritmo. Em cada ciclo, uma função hash (f) é aplicada no bloco direito e na chave, e o resultado do hash é usado para fazer um XOR com o bloco esquerdo. Depois disto, os blocos são trocados. O resultado do XOR torna-se o novo bloco direito e o bloco direito inalterado torna-se o bloco esquerdo. O processo é então repetido algumas vezes.
Cifra de Feistel - Genérica A função hash é somente um misturador de bits.229 A operação correta do algoritmo se baseia na propriedade determinística da função hash, ou seja, se processar exatamente as mesmas entradas, o resultado será sempre o mesmo. Na decifração, o texto cifrado é dividido em blocos esquerdo e direito. A chave e o bloco bloco direito são submetidos à função hash para se obter o mesmo resultado hash usado no último ciclo da cifragem, sendo que o bloco direito permanece inalterado no último ciclo da cifragem. Em seguida, é feito um XOR entre o hash e o bloco esquerdo para reverter o último ciclo da cifragem e o processo é repetido até que todos os ciclos tenham sido revertidos.
229
O hash é um valor obtido pelo processamento da senha, valor que varia de 128 a 512 bits. A função que gera o hash não tem inversa, o que quer dizer que, mesmo possuindo o valor do hash, é impossível obter a senha original. Ver: http://www.cys.com.br/web/index.php?option=com_content&task=view&id=77&Itemid=83.
A segurança de uma cifra de Feistel depende essencialmente do tamanho da chave e da irreversibilidade da função hash. O ideal é que o resultado da função hash seja parecido com bits randômicos, a partir dos quais não se consiga obter qualquer informação a respeito da(s) entrada(s). 6.1.5.5 – O Algoritmo RC2 O RC2 é uma cifra de bloco simétrico de chave de tamanho variável (variablekey-size symmetric block cipher) e pode substituir o DES em versões para exportação (dos EUA para fora). Ele pode ser usado da mesma maneira que o DES, incluindo a encriptação tripla. Para exportação, o RC2 e o RC4 têem suas chaves limitadas a 40 bits; 56 bits, no caso de subsidiárias ou escritórios de além-mar, de companhias norte-americanas. Uma cadeia (string) de 40 bits adicional, chamada salt, pode ser usada para frustrar os ataques que tentem compilar tabelas de possíveis encriptações. O salt é apensado à chave de encriptação, e esta chave mais comprida é usada para encriptar a mensagem. O salt é então enviado, sem encriptação, junto com a mensagem. Os algoritmos RC2 e RC4 são propriedade da RSA Data Security, Inc. Eles tem sido largamente usados por desenvolvedores que desejam exportar o seus produtos (o DES quase nunca é aprovado para exportação). 6.1.5.6 – A Cifra de Blocos DES Até meados da década de 1970 não existia uma cifra oficial aceita pelo governo norte-americano como cifra padrão de segurança. Por esta razão, o National Bureau of Standards solicitou através de um concurso que alguma instituição apresentasse uma solução. O Bureau tinha este papel, o de estabelecer padrões e de auxiliar o governo e a indústria no acesso à tecnologia, e se encarregava de avaliar os métodos de proteção para preparar linhas de ação. Para o concurso, ele solicitou técnicas e algoritmos para: a) a encriptação de dados por computador; b) para implementar a função criptográfica de gerar, avaliar e proteger chaves criptográficas; c) manter arquivos codificados com chaves que expiram; fazer atualizações parciais em arquivos encriptados, etc. No dia 6 de Agosto de 1974 a IBM apresentou um algoritmo candidato que ela havia desenvolvido internamente, denominado Lúcifer.230 Em 1977 o NBS publicou uma variante mais fraca deste algoritmo231, o DES (Data Encryption Standard). Ele logo foi adotado como padrão nos EUA, para proteger informações comerciais. Na
230
Horst Feistel, o autor do algoritmo Lúcifer, era um imigrante alemão que chegara aos Estados Unidos em 1934. Com a entrada dos EUA na guerra (Segunda Guerra Mundial), teve que cumprir prisão domiciliar até 1944. Começou a pesquisar sobre criptologia quando foi para o Cambridge Research Center da Força Aérea Americana, Imediatamente começou a ter problemas com a National Security Agency – NSA, que acabou fazendo com que o projeto de pesquisa de Feistel fosse cancelado. Em 1960 ele foi para a Mitre Corporation, mas a NSA forçou-o a abandonar seu trabalho pela segunda vez. Feistel foi em seguida para o Thomas J. Watson Laboratory da IBM, onde prosseguiu com suas pesquisas. Foi neste laboratório que no início de 1970 ele desenvolveu o sistema Lúcifer, sistema que foi apresentado à NBS. Após avaliar o algoritmo com a ajuda da National Security Agency, o NBS adotou o algoritmo Lúcifer com algumas modificações, sob a denominação de Data Encryption Standard – DES, em 15 de Julho de 1977. 231 Enquanto o Lúcifer usava chaves de 128 bits, o DES usava chaves de somente 56 bits.
verdade, ele foi o primeiro algoritmo de criptografia232 colocado à disposição do mercado. O DES cifra blocos de 64 bits (8 caracteres) usando uma chave de 56 bits, mais 8 bits de paridade (o que soma 64 bits). O algoritmo inicia realizando uma transposição inicial sobre os 64 bits da mensagem, em seguida 16 passos de cifragem, e conclui realizando uma transposição final, que é a inversa da transposição inicial. Para os 16 passos de cifragem usam-se 16 sub-chaves, todas derivadas da chave original através de deslocamentos e transposições.233 Em resumo: • • • • •
Uma substituição fixa, chamada de permutação inicial, de 64 bits em 64 bits; Uma transformação, que depende de uma chave de 48 bits e que preserva a metade direita; Uma troca das duas metades de 32 bits cada uma; Repetem-se os passos 2 e 3 durante 16 vezes; Inversão da permutação inicial.
As permutações do DES são de três tipos: na primeira, os bits são simplesmente reordenados (straight permutation); na segunda, alguns bits são duplicados e então reordenados (expanded permutation), aumentando assim o número de bits na saída; na terceira, alguns bits são descartados para depois reordenar os restantes (permuted choice), diminuindo os bits de saída.
232
O DES é um algoritmo de cifragem de blocos de chave única. Portanto, é um sistema simétrico. Para uma implementação Flip-Chip MCM-D do algoritmo DES, ver CS Digital Library, em: http://www.computer.org/portal/web/csdl/doi/10.1109/MCMC.1997.569339. 233
6.1.5.6.1 – As S-P Networks (SPN) Os processos de substituição e transposição no DES usam o sistema de caixas (Box) construídas (hardware) para estas finalidades. Essas caixas são conhecidas como S-Box e P-Box.234 As substituições são conhecidas como S-boxes e são especificadas em oito tabelas, onde entram blocos de seis e saem blocos de quatro bits. O primeiro e o último 234
As operações lógicas do tipo XOR, ADD e SHIFT são formas alternativas de se obter as propriedades de difusão e confusão, sem a necessidade de usar P-boxes (caixas de permutação para gerar difusão) ou Sboxes (caixas de substituição para gerar confusão).
bit são tomados como se fossem um número de dois bits, formando assim as linhas das tabelas das caixas S. Os bits dois a cinco agrupados formam um vetor de 0 a 15. A combinação de ambas é conhecida como S-P networks.
Cada passo de cifragem do DES, tem dois objetivos básicos: a difusão e a confusão. A difusão visa eliminar a redundância existente na mensagem original, distribuindo-a pela mensagem cifrada. O propósito da confusão é tomar a relação entre a mensagem e a chave tão complexa quanto possível. Apenas a permutação ou a substituição não iriam garantir a segurança da cifra. Por isto, a combinação dos procedimentos cria a cifra-produto ou round. E é a iteração dos rouns que garante a segurança final. Esta é a essência das S-P networks. A utilização de uma S-P network em uma cifra não é um processo prático, por exigir a construção de uma rede inversa para a decifração, o que leva à duplicação de dispositivos e programas. Assim, o round é projetado de forma a que ele mesmo seja a
sua inversa (o round se torna a sua própria inversa através de algumas “trocas” nos subblocos). Isto é conseguido através do Circuito de Feistel, em que cada bloco é partido em dois sub-blocos. Em um é aplicada a transformação, enquanto que o outro é preservado. Em seguida os sub-blocos são trocados, para que o round seguinte afete o sub-bloco que ficara inalterado.
L(i) = R(i-1)
R(i) = L(i-1) (K(i),R(i-1))
Eis um exemplo da utilização de circuitos de Feistel na Cifra Lúcifer, que antecedeu o DES.
Da chave da cifra extraem-se 16 sub-chaves, uma para cada round. O padrão S-P é seguido na construção do round. Como se pode ver, no último round não ocorre a troca dos blocos.
A segurança do DES não se baseia no conhecimento do algoritmo, mas apenas no conhecimento da chave secreta. Teoricamente, o DES pode ser quebrado pelo método da força bruta, tentando-se todas as combinações possíveis de chave. Como a chave tem 56 bits, tem-se um total de 256 chaves possíveis (72.057.594.037.927.936). Atualmente, existem diversos algoritmos de cifragem de blocos de chave única: • Triple-DES: Usa uma chave de 168 bits (56x3). Ou seja, o DES é aplicado 3 vezes, com seqüências de cifragem e decifragem, combinando a utilização de 2 chaves (é aplicado três vezes para o mesmo bloco de dados, usando três chaves diferentes, exceto que a segunda operação é feita de trás para frente, em modo de decifragem). • WLucifer: precursor do DES. • Madryga: trabalha com 8 bits, usando ou-exclusivo e deslocamento de bits. • NewDES: trabalha com blocos de 64 bits e chave de 120 bits. • FEAL-N: baseado no DES, pode-se especificar o número de passos da cifragem. É fraco, se utilizar menos que 8 passos. • LOKI: usa bloco e chave de 64 bits. • Khufu e Khafre: trabalham de modo semelhante ao DES. Usam tabelas de substituição de 256 posições de 32 bits, contra as de 6 posições de 4 bits do DES. Usam chaves de 512 bits e um número de passos flexíveis, múltiplo de 8. • IDEA: usa blocos de 64 bits, com chave de 128 bits. • MMB: usa blocos e chave de 128 bits. • Skipjack: usa chave de 80 bits e 32 passos de processamento. 6.1.5.7 – A Cifra de Blocos AES Assim como se fez com o DES, em 1997 o governo americano (através do (National Institute of Standards and Technology – NIST) iniciou um processo de seleção para escolher um novo algoritmo de chave simétrica, que substituiria o DES.235 De acordo com as especificações, os algoritmos deveriam ser de chave simétrica e suportar blocos de 128 bits, bem como chaves de 128, 192 e 256 bits. Em agosto de 1998 apresentaram-se quinze candidatos: Cast-256, Crypton, Deal, DFC, E2, Frog, HPC, LOKI97, Magenta, MARS, RC6, Rijndael, Safer+, Serpent e Twofish. Em 1999 foram selecionados cinco finalistas: MARS, RC6, Rijndael, Serpent e Twofish. Três anos e meio após o início do concurso, o NIST escolheu o algoritmo Rijndael236 (de: Vincent Rijmen e Joan Daemen), dois belgas criadores do algoritmo. De acordo com o NIST, ele combina as características de segurança, desempenho, flexibilidade e facilidade de implementação. Além disso, apresenta alta resistência a ataques como power attack237 e timing attack,238 bem como exige pouca memória.
235
O DES já não oferecia a segurança desejada, pois havia sido quebrado com a ajuda de um dispositivo de hardwarre, o DES Cracker, construído pela Electronic Frontier Fundation. 236 O Rijndael era um refinamento do Square, um projeto anterior de Daemen e Rijmen (que desenvolveram também o Anúbis e o Grand Cru). O Square, por sua vez, evoluiu do Shark. Ao contrário do DES, o Rijndael é uma rede de permutação-substituição, e não uma rede de Feistel. 237 Tipo de ataque que busca descobrir as características de um dispositivo analisando o seu consumo de energia. Sobre o power attack, ver: http://euler.ecs.umass.edu/research/regb-dft07.pdf. Ver também: http://eref.uqu.edu.sa/files/Others/Elliptic%20Curves/Design%20of%20secure%20cryptography%20agai nst%20the%20threat%20of%20power-attacks%20in%20DSP-embedded%20processors.pdf.
O AES (Advanced Encryption Standard – AES, ou Padrão de Criptografia Avançada), também conhecido por Rijndael,239 é uma cifra de bloco adotada como padrão de criptografia pelo governo dos Estados Unidos. Ele foi anunciado pelo NIST em 26 de Novembro de 2001, e tornou-se um padrão efetivo em 26 de Maio de 2002.240 O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits. A chave é expandida usando-se o agendamento de chaves do Rijndael. A maioria dos cálculos do AES é feita em um campo finito próprio. Ele opera sobre um arranjo bidimensional de bytes com 4x4 posições, denominado de estado (as versões do Rijndael com um tamanho de bloco maior têm colunas adicionais no estado). Opera em 10, 12 ou 14 rodadas (rounds), dependendo do tamanho da chave241 (10 rounds para chaves de 128 bits, 12 rounds para chaves de 192 bits e 14 rounds para chaves de 256 bits). 6.1.5.8 – A Cifra de Blocos IDEA O algoritmo IDEA (International Data Encryption Algorithm) foi desenvolvido em 1990 na Suiça, por James L. Massey e Xueija Lai. É um algoritmo simétrico que utiliza uma chave de 128 bits. Originalmente, foi chamado de PES (Proposed Encryption Standard). Um ano após o seu lançamento, em 1991, os pesquisadores Biham e Shamir demonstraram que o algoritmo era susceptível à criptoanálise diferencial; assim, os autores fizeram modificações substanciais e chamaram o novo algoritmo de IPES (Improved Proposed Encryption Standard). Em 1992 o IPES foi rebatizado, transformando-se no IDEA, sendo considerado um dos melhores algoritmos de bloco. O algoritmo é usado para cifrar/decifrar e, como é comum nas cifras de bloco, usa a confusão e a difusão para produzir o texto cifrado. O IDEA possui três grupos algébricos cujas operações são misturadas. Estas operações, que podem ser facilmente implementadas via hardware e/ou software, são: XOR Adição módulo 216 (adição ignorando qualquer overflow) Multiplicação módulo 216+1 (multiplicação ignorando qualquer overflow)
238
O timing attack é um tipo de ataque (a side channel attack) no qual o atacante tenta comprometer o sistema analisando o tempo que ele leva para executar algoritmos criptográficos. Ver: http://en.wikipedia.org/wiki/Timing_attack. [Side channel attack: é qualquer tipo de ataque pelo qual se busca ganhar informação pela implementação física de um criptosistema, mais do que pela força bruta]. 239 Não são exatamente iguais: o Rijndael suporta uma maior gama de tamanhos do bloco e da chave. O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits; já o Rijndael pode ser especificado com chaves e tamanhos de bloco de qualquer múltiplo de 32 bits, com um mínimo de 128 bits e um máximo de 256 bits. 240 Para uma descrição do algoritmo AES, ver: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard. Ver também: http://www.cic.unb.br/docentes/pedro/segdados_files/CriptSeg5-6.pdf. 241 Afirma-se que o ataque de chave relacionada pode quebrar um AES de 256 bits com uma complexidade de 2995, a qual, apesar de ser mais rápida do que o ataque pela força bruta, ainda assim é impraticável. O AES 192-bits também pode ser quebrado de maneira similar, mas com uma complexidade de 2176. Já o AES 128-bits não é afetado por este ataque. Ver: https://cryptolux.org/mediawiki/uploads/1/1a/Aes-192-256.pdf.
Todas estas operações são feitas com blocos de 16 bits, o que faz com que este algoritmo seja também eficiente em processadores de 16 bits. 6.1.5.8.1 – Descrição do Algoritmo IDEA242 Na cifração, o texto claro é dividido em blocos de 64 bits, sendo que cada um deles é dividido em quatro sub-blocos de 16 bits: X1, X2, X3 e X4. Estes quatro subblocos são a entrada da primeira volta ou rodada do algoritmo (no total, são oito rodadas). Em cada rodada, os quatro sub-blocos são submetidos à operação lógica XOR, somados (adição de inteiros módulo 216) e multiplicados (multiplicação de inteiros módulo 216 +1) entre si e com seis sub-blocos de 16 bits oriundos da chave (K1, K2, K3, K4, K5 e K6). São usadas 52 (8x6+4) subchaves. Entre cada rodada, o segundo e o terceiro sub-bloco são trocados. Em cada rodada, a sequência de eventos é a seguinte: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Multiplicação de B1 pelo primeiro sub-bloco da chave K1. Adição de B2 com o segundo sub-bloco da chave K2. Adição de B3 com o terceiro sub-bloco da chave K3. Multiplicação de B4 pelo quarto sub-bloco da chave K4. XOR entre os resultados obtidos nas etapas (1) e (3). XOR entre s resultados obtidos nas etapas (2) e (4). Multiplicação do resultado da etapa (5) pelo quinto sub-bloco da chave K5 Adição dos resultados das etapas (6) e (7). Multiplicação do resultado da etapa (8) pelo sexto sub-bloco da chave K6. Adição dos resultados das etapas (7) e (9). XOR entre os resultados obtidos nas etapas (1) e (9). XOR entre os resultados obtidos nas etapas (3) e (9). XOR entre os resultados obtidos nas etapas (2) e (10). XOR entre os resultados obtidos nas etapas (4) e (10).
A saída da rodada são os quatro sub-blocos resultantes das etapas (11), (13), (12) e (14). Exceto na última rodada, os sub-blocos (13) e (12) trocam de lugar e esta nova sequência de sub-blocos será a entrada para a próxima rodada. Após a oitava rodada, a saída final é transformada com: 1. 2. 3. 4.
Multiplicação de B1 pelo primeiro sub-bloco da chave K1. Adição de B2 com o segundo sub-bloco da chave K2. Adição de B3 com o terceiro sub-bloco da chave K3. Multiplicação de B4 pelo quarto sub-bloco da chave K4.
No final, os quatro sub-blocos obtidos (G1, G2, G3 e G4) são concatenados para produzir o texto cifrado. A obtenção de sub-blocos da chave é simples. O algoritmo usa 52 destes subblocos – seis em cada uma das oito rodadas, mais quatro na última transformação.
242
Uma boa descrição deste algoritmo http://www.ufpe.br/telematica/curso/downloads/idea.pdf.
pode
ser
encontrada
em:
Inicialmente, a chave de 128 bits é dividida em oito sub-blocos de 16 bits. Estes são os primeiros sub-blocos da chave: seis serão usados na primeira rodada e os outros dois serão K1 e K2 da segunda rodada. Em seguida, os bits da chave são deslocados 25 posições para a esquerda e a nova chave é dividida novamente em oito sub-blocos, dos quais quatro serão usados na segunda rodada e quatro na terceira. O processo continua enquanto sub-blocos da chave forem necessários para completar o algoritmo. O processo de decifração é o mesmo da cifração, com exceção dos sub-blocos da chave que precisam ser revertidos. Na decifração, os sub-blocos da chave são o inverso aditivo ou o inverso multiplicativo dos sub-blocos da chave usados na cifragem (no caso do IDEA, o inverso multiplicativo de 0 é 0). A tabela abaixo mostra os sub-blocos da chave na cifragem e os sub-blocos da chave correspondentes na decifração: RODADA -----1 2 3 4 5 6 7 8 saída
SUB-BLOCOS NA CIFRAGEM --------------------------------K1(1) K2(1) K3(1) K4(1) K5(1) K6(1) K1(2) K2(2) K3(2) K4(2) K5(2) K6(2) K1(3) K2(3) K3(3) K4(3) K5(3) K6(3) K1(4) K2(4) K3(4) K4(4) K5(4) K6(4) K1(5) K2(5) K3(5) K4(5) K5(5) K6(5) K1(6) K2(6) K3(6) K4(6) K5(6) K6(6) K1(7) K2(7) K3(7) K4(7) K5(7) K6(7) K1(8) K2(8) K3(8) K4(8) K5(8) K6(8) K1(9) K2(9) K3(9) K4(9)
RODADA -----1 2 3 4 5 6 7 8 saída
SUB-BLOCOS NA DECIFRAÇÃO -------------------------------------------K1(9)-1 -K2(9) -K3(9) K4(9)-1 K5(8) K6(8) K1(8)-1 -K2(8) -K3(8) K4(8)-1 K5(7) K6(7) K1(7)-1 -K2(7) -K3(7) K4(7)-1 K5(6) K6(6) K1(6)-1 -K2(6) -K3(6) K4(6)-1 K5(5) K6(5) K1(5)-1 -K2(5) -K3(5) K4(5)-1 K5(4) K6(4) K1(4)-1 -K2(4) -K3(4) K4(4)-1 K5(3) K6(3) K1(3)-1 -K2(3) -K3(3) K4(3)-1 K5(2) K6(2) K1(2)-1 -K2(2) -K3(2) K4(2)-1 K5(1) K6(1) K1(1)-1 -K2(1) -K3(1) K4(1)-1
A velocidade de cifração e decifração do IDEA é praticamente a mesma do DES. Entretanto, devido aos cálculos suplementares nos sub-blocos da chave, a decifração é um pouco mais lenta do que a cifração.
Esquema do IDEA 6.1.5.9 – O Algoritmo TEA O algoritmo TEA é uma cifra de bloco bastante segura, fácil de ser implementada em várias linguagens de programação, e é de processamento muito rápido, pois consome pouco recurso das máquinas. Foi criado por David Wheeler e Roger Needham no laboratório de computação da Universidade de Cambridge, Inglaterra, em novembro de 1994. Em sua primeira versão, é um algoritmo do tipo Feistel que faz uso de operações de vários grupos algébricos - XOR, ADD e SHIFT. O TEA cifra blocos de 64 bits de dados usando uma chave de 128 bits. Ele adquire uma difusão completa (quando a diferença de um bit no texto claro causa aproximadamente 32 bits de diferença no texto cifrado) após seis ciclos. Os autores publicaram uma rotina, escrita em C, para uma cifragem com uma chave k[0] - k[3] e com os dados em v[0] e v[1]. void code(long* v, long* k) { unsigned long y=v[0],z=v[1], sum=0, delta=0x9e3779b9, n=32 ; while (n-->0) {
/* set up */ /* a key schedule constant */ /* basic cycle start */
sum += delta ; y += (z5)+k[1] ; z += (y5)+k[3] ; } v[0]=y ; v[1]=z ; }
/* end cycle */
O algoritmo usa múltiplos de uma constante mágica, delta (δ), derivada da proporção de ouro, para garantir que a cifragem seja diferente em cada ciclo. O valor de delta para o TEA é definido como: Constante delta:
Um ciclo do TEA = duas etapas Feistel Segundo os autores, este algoritmo pode substituir o DES com vantagens. Além disso, apesar de ter 32 ciclos (64 etapas Feistel) e apesar da velocidade de processamento não ser o principal objetivo, o TEA é três vezes mais rápido que o melhor software de implementação de DES com 16 etapas. Todos os modos de uso do DES também são aplicáveis ao TEA. O número de ciclos pode variar ou até fazer parte da chave. Devido a falhas de segurança (demonstrou-se que o TEA é susceptível aos ataques de Chaves Equivalentes e de Chaves Relacionadas), ele foi aperfeiçoado, dando origem a outras versões: XTEA, BlockTEA e XXTEA.
6.1.5.10 – O Algoritmo XTEA Em 1997, Wheeler e Needham, autores do TEA, publicaram duas variações mais resistentes à criptoanálise: o XTEA e o BlockTEA. O XTEA (extended TEA) apresenta a seguinte estrutura:
Um ciclo do XTEA = 2 etapas Feistel O XTEA usa as mesmas operações básicas do TEA (XOR, adição módulo 232 e shifts), mas a ordenação é bem diferente. Para prevenir ataques baseados em chaves, as 4 sub-chaves são misturadas de uma forma menos regular e com uma frequência menor. Sua implementação continuou sendo fácil. 6.1.5.11 – O Algoritmo BlockTEA O BlockTEA opera em blocos de tamanho variável mas múltiplo de 32 bits. O algoritmo aplica sequencialmente a função de arredondamento do XTEA em cada word dos blocos e o combina com o bloco subsequente. Isto é repetido em várias etapas, dependendo do tamanho do bloco (no mínimo 6 vezes). Um das vantagens deste procedimento é que a necessidade de modos de operação (como CBC, OFB, CFB, etc) é eliminada e que a cifra pode ser aplicada diretamente na mensagem. A função de arredondamento f do BlockTEA é essencialmente a mesma do XTEA, ou seja:
Função de arredondamento do BlockTEA 6.1.5.12 – O Algoritmo XXTEA243 Em 1998 Wheeler e Needham sugeriram uma nova melhoria, aperfeiçoando a função de arredondamento. A nova versão foi publicada com o nome de XXTEA.
XXTEA O XXTEA opera com blocos de tamanho variável que são um múltiplo arbitrário de 32 bits em tamanho (mínimo de 64 bits). O número de ciclos completos depende do tamanho do bloco, sendo de pelo menos seis (pode chegar a 32, para blocos de tamanho pequeno). Ele é melhor do que o TEA para mensagens longas.
243
Ver: http://en.wikipedia.org/wiki/XXTEA.
Um round do XXTEA Sua formulação incrementada (não a original) é a seguinte: #include #define DELTA 0x9e3779b9 #define MX ((z>>5^y3^z> 2) & 3; for (p=0; p> 2) & 3; for (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX; z = v[n-1]; y = v[0] -= MX; } while ((sum -= DELTA) != 0); } }
6.1.5.13 – O Algoritmo RC5244 O RC5 tem blocos de tamanho variável, chave variável (de 0 a 2040 bits), e rodadas (rounds) variáveis (de 0 a 255). Como padrão, costuma-se usar os seguintes parâmetros: blocos de 64 bits, chave de 128 bits e 12 rodadas.245 Sua operação utiliza um número de adições modulares e XOR. Utiliza a estrutura geral da rede Feistel. Pode ser implementado em poucas linhas de cifrar/decifrar.
Uma rodada (duas meia-rodadas) do RC5 6.1.5.14 – O Algoritmo RC6 O RC6 é uma cifra de blocos de chave simétrica derivada do RC5. Foi projetada por Ron Rivest, Matt Robshaw, Ray Sidney e Yiqun Lisa Yin para atender aos requisitos da competição do AES. Ele usa uma rede Feistel, tem blocos com 128 bits e suporta chaves de 128, 192 e 256 bits, e mais uma grande variedade de tamanhos de words, chaves e número de rodadas. Estruturalmente, é similar ao RC5, usando rotações dependentes de dados (data-dependent rotations), adição modular e operações XOR. Ele usa uma operação de multiplicação extra para fazer a rotação dependente em cada bit de uma word, e não apenas dos bits menos significativos.
244
O RC5 é designado como RC5-w/r/b, onde: w = tamanho da palavra em bits; r = número de rodadas; b = número de bytes de 8 bits na chave. Não deve ser confundido com o RC-5. Este é um protocolo que foi desenvolvido no final dos anos 1980 como um protocolo de comunicações em infra-vermelho para controles remotos. 245 Para maior proteção, sugere-se entre 18 a 20 rodadas. Isto porque, com 12 rodadas (com blocos de 64 bits), o RC5 é susceptível a ataques diferenciais que usem 244 textos claros escolhidos.
Algoritmo de Encriptação/Desencriptação do RC6: // // // // // // // // //
Encryption/Decryption with RC6-w/r/b Input: Plaintext stored in four w-bit input registers A, B, C & D r is the number of rounds w-bit round keys S[0, ... , 2r + 3] Output: Ciphertext stored in A, B, C, D '''Encryption Procedure:''' B = B + S[0] D = D + S[1] for i = 1 to r do { t = (B*(2B + 1)) u = (D*(2D + 1)) A = ((A ^ t) {6, 5, 3, 2, 1} [regra: inversão simples dos elementos]
340
A inversa da função y = f(x) é a função x = f(y). Note-se que, sendo a permutação uma bijeção, sempre se terá uma permutação inversa, o que não é bom para a criptografia. 341
{a, b, c, d, e, f, g, h, i} => {d, i, b, c, a, e, h, g, f} [regra: deslocamento aleatório] 10.6 – Computabilidade, Recursividade, Decidibilidade342 Computabilidade: é uma propriedade fundamental das máquinas ditas computáveis. Em princípio, um problema matemático é computável se puder ser resolvido por um “dispositivo que o compute”. Atualmente, estes dispositivos são os micro-processadores e os computadores. Os computadores são máquinas capazes de receber como entrada de dados uma série de sentenças (que constituem o programa) escrito em uma linguagem artificial computável (que é a linguagem suportada pelo computador) e executar tarefas definidas, baseadas na interpretação de cada sentença. O ato de interpretar uma sentença corresponde à execução do programa. Durante sua execução, o programa recebe entradas de dados informadas pelo usuário e produz saídas de dados que são enviadas de volta para o usuário. A entrada de dados é formada por sentenças estruturadas em um linguagem, e é formada por um conjunto de símbolos, conforme um alfabeto e regras de formação bem definidas. Desse modo, a entrada de dados do programa pertence à linguagem artificial definida pelo programador, ou seja, a linguagem usada pelo usuário do programa. A capacidade computacional plena (computabilidade) surge no momento em que a linguagem L0 – na qual o programa (a linguagem do programador) é construído – permite a construção de sentenças suficientemente poderosas (programas P0 escritos em L0), cuja execução aceita entrada de dados na linguagem L1, em que L1 é tão poderosa quanto L0. Neste caso, é possível, de forma recursiva e indutiva que o usuário do programa P0 escreva uma sentença em L1, que interpretada por P0 em execução, receba sentenças numa linguagem L2, a qual possui a mesma capacidade computacional das linguagens L0 ou L1. Recursividade ou recursão: é um termo usado para descrever o processo de repetição de um objeto, de forma similar a qualquer operação anterior. A recursividade, na programação de computadores, envolve a definição de uma função que pode invocar a si própria. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, projetos (designs) ou outros dados.343 Decidibilidade e Linguagens Decidíveis: uma linguagem decidível é uma linguagem em que existe uma Máquina de Turing Universal que, quando recebe uma cadeia de dados de entrada, pode decidir entre aceitá-la ou rejeitá-la. A Máquina de Turing Universal – MTU é assim chamada devido à sua capacidade de simular qualquer outra máquina a partir da descrição da máquina de entrada. Ela ilustra bem os problemas de indecibilidade. 342
Ver: http://www.ncc.up.pt/~nam/publica/compdec.pdf. Ver também: http://www.cic.unb.br/~jhcf/MyBooks/ic/3.ProgramacaoBasica/AspectosTeoricos/MaquinasLinguagens/ Computabilidade/computabilidade.html. 343 Ver: http://pt.wikipedia.org/wiki/Recursividade_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29.
10.6.1 – O Problema da Parada344 O problema da parada pode ser definido como: Dado a descrição formal de um programa como a entrada inicial, determinar se o programa, quando executado nesta entrada, sempre pára. O problema da parada foi um dos primeiro problemas a serem provados como indecidíveis. Em maio de 1936, Alan Turing, no artigo On Computable Numbers With an Application to the Entscheidungsproblem, provou que não pode existir um procedimento geral para resolver este problema, para todas as entradas possíveis da MT.345 10.6.2 – Problema Polinomial e a Classe P346 Um problema computacional é polinomial se existe um algoritmo polinomial (caracterizado por um polinômio) para o problema. Problemas desse tipo são considerados tratáveis (matematicamente), do ponto de vista computacional. Definido limitadamente, a classe P de problemas é o conjunto de todos os problemas polinomiais.347 10.6.2.1 – Algoritmos Não-Polinomiais e Algoritmos Polinomiais Diz-se que um algoritmo resolve um dado problema se, ao receber qualquer instância desse problema, devolve uma solução ou diz que ela não tem solução. Um problema é não-polinomial se nenhum algoritmo polinomial (conhecido) resolve o problema. Problemas desse tipo são considerados computacionalmente intratáveis. Um algoritmo que resolve um dado problema é polinomial, se o consumo de tempo no pior caso é limitado por uma função polinomial dos tamanhos das instâncias do problema. Assim, é polinomial qualquer algoritmo que consuma no máximo: 100N4 + 300N2 + 5000 [unidades de tempo] , sendo N o tamanho da instância. Também é polinomial qualquer algoritmo que consuma no máximo 200N9 log N [unidades de tempo].
344
A execução de um programa é interrompida em várias situações: quando o cálculo chega ao fim e uma instrução STOP é executada; quando ocorre algum erro na execução do programa (ONERRORGOTO); quanto a computação de algum dado é terminada, e o programa reconhece isto (PARE). Esta “parada” deve ser decidida pelo programa, e não pelo programador. 345 Ele conseguiu a prova ao reduzir o problema da parada ao Entscheidungsproblem, que havia sido provado como indecidível pelo lógico Alonzo Church no mês anterior. 346 Ver: http://pt.wikipedia.org/wiki/NP_%28complexidade%29. 347 Definição limitada porque, a rigor, a classe P contém apenas os problemas polinomiais de decisão.
Os algoritmos polinomiais são considerados relativamente rápidos. Quanto aos algoritmos não-polinomiais — como, por exemplo, os que consomem tempo proporcional a 2N — são considerados extremamente lentos. 10.6.3 – Tempo Polinomial Na chamada teoria da complexidade computacional, NP (Tempo polinomial não determinístico – Non-Deterministic Polynomial time) representa o conjunto de problemas que são decidíveis em tempo polinomial por uma MT não-determinística. É o conjunto de problemas que podem ser verificados em tempo polinomial por uma Máquina de Turing determinística. 10.6.3.1 – A Classe NP de Problemas. P = NP?348 Apesar de todo o avanço da matemática, é de conhecimento comum que o status de vários problemas é desconhecido: não se sabe se o problema é polinomial ou não (se pode ou não ser resolvido usando um polinômio qualquer). Por essa razão, os matemáticos procuram investigar a complexidade relativa dos problemas. Trata-se de verificar se um dado problema Y é computacionalmente mais fácil ou mais difícil que um outro problema X, cuja solução pode ser conhecida. Uma consideração é também levantada, neste caso: o da razoabilidade do problema. Ou seja: quais problemas devem ser considerados "razoáveis"? De um modo geral, diz-se que um problema é "razoável" se é fácil reconhecer uma solução, quando esta é encontrada. Mais precisamente, um problema computacional X é "razoável" se toda instância I de X satisfaz a seguinte condição: é possível verificar, em tempo polinomial, se uma suposta solução da instância I é, de fato, uma solução de I. O conjunto de todos os problemas "razoáveis" é (essencialmente) igual à classe NP de problemas.349 Neste ponto, entra o problema PxNP. De forma hierárquica, é evidente que a classe NP inclui a classe P (ou seja, todo problema polinomial é "razoável"). Admite-se até que P seja apenas uma pequena parte de NP. Entretanto, ninguém conseguiu ainda encontrar um problema NP que não esteja em P, isto é, um problema "razoável" para o qual não existe um algoritmo polinomial. Esta situação sugere que talvez P seja igual a NP (mas isto é apenas uma conjectura não provada).350
348
Ver: http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/NPcompleto.html. O conjunto dos problemas "razoáveis" não deve ser confundido com a classe NP. 350 A pergunta "P = NP?" por ser reformulada assim: "É verdade que todo problema cujas soluções podem ser conferidas por um algoritmo polinomial pode também ser resolvido por um algoritmo polinomial?". 349
10.7 – Aplicações Matemáticas na Criptografia A função de cifragem ek (ou regra de encriptação) precisa ser uma função injetora. Ou seja, a regra ek, quando aplicada, pode dar apenas um resultado.351 A importância do uso destas funções na criptografia fica clara no seguinte exemplo: y = ek(x1) = ek(x2) , em que x1 é diferente de x2. Neste caso, quando se decifrar y, são encontrados dois resultados diferentes, que não podem ser usados (isto ocorre porque a função de cifragem usada não é unívoca). 10.7.1 – Sistema de Substituições Monoalfabéticas A característica dos sistemas de substituições monoalfabéticas é que cada letra da mensagem é substituída por outra, de modo tal que esta relação de substituição seja fixa. No caso da Cifra de César, a chave K é um número inteiro entre 0 e 25. Cada letra l da mensagem é encriptada usando-se a seguinte equação: e = (l + K) mod 26 Para desencriptar, usa-se: l = (e + K) mod 26 Neste caso, logicamente, a chave K tem que ser a mesma nas duas operações: encriptação e desencriptação. A limitação deste sistema é que ele só tem 25 chaves possíveis, e não seria muito demorado testar todas as possíveis chaves. 10.7.1.1 – Substituição Semi-Aleatória Nessa substituição, para cada bloco possível x, é definido um conjunto de blocos distintos A(x), e é substituído cada bloco x qualquer por um elemento aleatoriamente escolhido, do conjunto A(x). Essa substituição exige uma função injetora B → S(C),352 na qual um elemento está associado a um subconjunto de C, e, para quaisquer dois elementos de B, as duas imagens (subconjuntos de C) são disjuntas. Exemplo: Suponha-se que o alfabeto da mensagem seja constituído apenas de vogais. Os conjuntos são definidos da seguinte maneira: a → { ei, io, eo, au } e → { ie, ou , ao, iu } 351
Como já se viu, funções que dão apenas um resultado são chamadas de injetivas, injetoras, unívocas ou 1-1. 352 S(C) é o conjunto dos subconjuntos de C.
i → { uo, eu, ao, oo } o → { uu, ae, aa, ia } u → { ai, ee, oe, ii } Assim, a mensagem pode ter várias possíveis cifras: OIE → AEAOIU ou UUUOOA Os conjuntos devem ser disjuntos, para que não ocorram casos em que dois blocos diferentes tenham o mesmo ciframento. Com a substituição aleatória, o tamanho da cifra tende a aumentar, o que torna mais difícil a desencriptação pela análise de frequência de cifras. 10.7.2 – Sistema de Permuta Neste tipo de sistema a chave K é um vetor de permuta P de tamanho m ( m 2). O vetor P deverá ter todos os números entre 1 e m, sem repetir nenhum. Estas características garantem que P terá uma permuta inversa. A mensagem a ser criptografada deve ser dividida em blocos de m letras. Suponha-se o bloco de texto puro conhecido como tp: tp = ( a1, a2, a3, ...,am) A saída desse algoritmo para este bloco será um outro bloco de mesmo tamanho, cuja permutação dependerá da chave K. Exemplo: M = VAMOSATACARAMANHASEMFALTA P = (3,5,4,1,2) M’ = MSOVAAACATMNARASMEHALATFA 10.7.3 – Vigenère e os Sistemas Polialfabéticos Sistemas polialfabéticos são aqueles em que se tem a combinação ordenada de diversos sistemas monoalfabéticos. O sistema Vigenère é um sistema polialfabético que adota como chave um conjunto de p letras: ch = (l1, l2, l3, ...., lp) A mensagem deve ser dividida em blocos de p letras, sendo p o período do sistema polialfabético. Seja um bloco de texto puro tp: tp = (a1, a2, a3, ... , ap)
A saída desse algoritmo será um outro bloco, também com p letras. Este será a substituição de tp usando ch: tc = ((a1+l1)mod 26, (a2 + l2) mod 26 (a3 + l3) mod 26, K, (ap + lp) mod 26) Ou seja, na cifra de Vigenère, se as letras A–Z forem mapeadas nos números inteiros (de 0 a 25) e a adição módulo 26 for aplicada, a encriptação pode ser escrita:
e a desencriptação,
Este conceito pode ser generalizado. Dado um período p, uma chave para uma substituição polialfabética é constituída de p chaves para substituições monoalfabéticas. Divide-se sempre a mensagem em blocos de p letras, e em cada letra de um bloco aplica-se uma das substituições monoalfabéticas da chave. 353 10.7.4 – Sistemas Modernos de Criptografia Um criptossistema é um sistema constituído por cinco sub-sistemas (A, C, K, E, D): A: é o conjunto finito de mensagens claras. C: é o conjunto finito de mensagens cifradas. K: é o conjunto das chaves possíveis (também conhecido como espaço das chaves), em que k é uma das chaves do conjunto E: há uma regra de cifragem chamada ek, onde e vem de encriptação, e k vem da chave usada. Portanto, k C K. Para cada chave pertencente ao conjunto de chaves, haverá uma encriptação diferente que pertence ao conjunto {ek C E}. D: para cada regra de ciframento há uma regra de deciframento d, e k será a chave usada. O conjunto de regras de decifração dk pertence ao conjunto D, ou seja, dk C D. Para cada chave pertencente ao conjunto de chaves existe uma regra de ciframento que pertence ao conjunto de regras de ciframento, que tem uma regra de deciframento correspondente que pertence ao conjunto de regras de deciframento. claro
Assim, ek e dk são funções. A função de ciframento pode ser usada num texto x: ek(x). O resultado é que o texto claro é transformado em texto cifrado, ou seja, ek: A → C. Com a função de deciframento ocorre o contrário, o que pode ser dito como
353
Sob este ponto de vista, o Sistema consecutivas do tipo Cifra de Cesar.
Vigenère é constituído de p substituições monoalfabéticas
dk: C → A. A função de cifragem ek(x) transforma o texto claro x em um texto cifrado, portanto, pode-se chamar ek(x) de texto cifrado. Se se aplicar a função de decifração correspondente a este texto cifrado, obtem-se o texto claro. Ou seja: dk(ek(x)) = x , para qualquer texto claro x
A
10.7.4.1 – Técnicas Criptográficas Modernas • • •
•
Primitivas: São simples funções matemáticas f : {0, 1}* → {0, 1}* que transformam strings de bits em outros strings de bits. Esquemas: são computações criptográficas que lidam com o conhecimento e a aleatoriedade. Distinguem-se dos protocolos (ver abaixo) pelo fato de usarem o conhecimento de um único agente. Protocolos: são computações complexas que envolvem interações entre dois ou mais agentes. Cada agente dispõe de uma seqüência de computações (uma estratégia) que usa, com o conhecimento próprio, em função de entradas (inputs) recebidas de outros agentes. Difusão e confusão: diz-se que uma substituição acrescenta confusão à informação, e uma transposição acrescenta difusão. O objetivo da confusão é tornar mais complexa a relação entre a chave e o texto cifrado, de modo a dificultar a que um criptoanalista possa deduzir qualquer propriedade da chave a partir do conhecimento do texto cifrado. O objetivo da difusão é embaralhar ou espalhar os bits do texto legível de modo a eliminar qualquer redundância no texto cifrado. 10.7.4.1.1 – Noção de Protocolo
Para que ocorra uma comunicação entre emissor e receptor usando um determinado criptossistema, é necessário estabelecer certas regras de comunicação: é o chamado protocolo. Ambos escolhem, por algum modo seguro, uma das chaves do conjunto de chaves (k K). Suponha-se que o emissor queira nviar uma mensagem através de um canal inseguro. Esta mensagem é constituída por caracteres do tipo: x = x1 x2 ... xn Como n indica o número de caracteres da mensagem, é claro que n > 0 (se for zero, não existe mensagem). Mais precisamente, n 1. A mensagem pertence ao conjunto de textos claros, ou seja, x A. Cada caracter da mensagem clara pertence ao conjunto de caracteres desta mensagem; como esta mensagem pertence ao conjunto de mensagens claras A, os caracteres também fazem parte deste conjunto. Se se chama cada caracter de xi, tem-se que: n
i
1
(o valor de i precisa ser igual ou maior do que 1 e menor ou igual ao número de caracteres n da mensagem). Daí: xi n
A , e: 1
;
1
View more...
Comments