Cifraxe

miniatura|250x250px|Exemplo de cifraxe con Vernam.
En criptografía, a **cifraxe** é un procedemento que utiliza un algoritmo de cifraxe cunha clave de cifraxe para transformar unha mensaxe, sen atender á súa estrutura lingüística ou significado, de tal forma que sexa incomprensible ou, polo menos, difícil de comprender a toda persoa que non teña a clave de descifraxe do algoritmo. As claves de cifraxe e de descifraxe poden ser iguais (criptografía simétrica), distintas (criptografía asimétrica) ou de ambos os tipos (criptografía híbrida).

O conxunto de caracteres usado na mensaxe sen cifrar pode non ser o mesmo que o xogo de caracteres que se usa na mensaxe cifrada.

Ás veces o texto cifrado escríbese en bloques de igual lonxitude. A estes bloques denomínaselles *grupos.* Estes grupos proporcionaban unha forma de verificación adicional, xa que o texto cifrado obtido debía ter un número enteiro de grupos. Se ao cifrar o texto plano non se ten ese número enteiro de grupos, entón adóitase encher ao final con ceros ou con caracteres sen sentido.

Aínda que a cifraxe poida volver secreto o contido dun documento, é necesario complementalo con outras técnicas criptográficas para poder comunicarse de maneira segura. Pode ser necesario garantir a integridade a autenticación das partes ou similares.

## Terminoloxía 
No proceso de cifraxe e/ou descifraxe establécense unha serie de termos e convenios para facilitar referirse aos distintos elementos que interveñen: 

## Preprocesamento do texto simple 
Nalgunhas ocasións, antes de cifrar realízase un preproceso de adaptación do texto plano. Neste proceso pódense seguir varios pasos que permitan a cifraxe ou fagan que a cifraxe resultante sexa máis resistente fronte a ataques por criptoanálisis. Todos estes cambios teranse que ter en conta cando se realice a descifraxe para poder obter o texto plano orixinal. Por exemplo, son frecuentes as seguintes operacións:

* **Conversión de alfabeto**. Algúns cifradores usan un alfabeto do texto en claro que non se corresponde co da mensaxe que se quere cifrar. Por tanto, é necesario adaptar a mensaxe a ese alfabeto. Por exemplo, algúns cifradores usan como alfabeto do texto plano o alfabeto latino. Se se desexa cifrar un texto en español, é necesario realizar un proceso como resultado do cal non aparezan os caracteres H, J, Ñ, K, O, W e Y (por exemplo, poderían substituírse o O e o W polo V, o K co Q, o Ñ polo N, o Y polo I, o J polo G, e eliminar o H). Outro exemplo clásico é o caso de cifradores que non permiten cifrar minúsculas, nese caso será necesario converter todo en maiúsculas.
* **Preproceso para dificultar o criptoanálisis**. Para aumentar a calidade do texto cifrado con certo cifrador, xa sexa pola súa resistencia fronte a ataques, extensión ou calquera outra circunstancia, ás veces se preprocesa o texto en claro. Algúns exemplos de estratexias son:
** Inclusión de fragmentos que son para despistar e que non teñen ningún significado. Habitualmente estes fragmentos son caracteres, e denomínanse *caracteres nulos*.
** Eliminación de situacións do texto claro que poden ser aproveitadas por ataques de criptoanálise. Por exemplo:
*** Os espazos en branco e signos de puntuación adoitan eliminarse para que, ademais de conseguir unha trasmisión máis eficiente, se consiga que as palabras non se poidan distinguir polos contornos. Isto pode producir ambigüidades que se tiñan que resolver polo contexto.
*** Os casos de secuencias de letras idénticas seguidas (por exemplo, *RR* ou *LL* do idioma español, en certos tipos de cifradores poden ser aproveitadas por atacantes. para romper estas secuencias de caracteres iguais, adoitan aplicarse dúas estratexias: eliminar un dos caracteres ou meter un contido que non se ten que interpretar (se é un só carácter, chámaselle *carácter nulo*).
* **Usar un código**. Ás veces, antes de cifrar, utilízase un código que dificulta chegar ao significado de certas palabras ou frases especialmente importantes ou habituais.
* **Conversión a números**. Hai algúns algoritmos de cifraxe como o RSA que necesitan converter os caracteres en números. Pódense seguir distintas estratexias. Vexamos algún exemplo:
** Poderiamos usar unha táboa de conversión dos caracteres en números usando algún sistema de codificación de caracteres como ASCII ou Unicode. Por exemplo a mensaxe "Hello World" usando Unicode-8 quedaría:

:: `48 65 6C 6C 6F 20 57 6F 72 6C 64`
:: Esta cadea de bytes poderiamos convertela nun número concatenándoos obtendo:
:: `0x48656C6C6F20576F726C64=87521618088882533792115812`
:* Outra opción podería ser considerar que os caracteres están ordenados segundo un criterio e interpretar a cadea como un número con base o número de caracteres do alfabeto. Por exemplo se consideramos que só hai caracteres en maiúsculas e ordenámolos segundo a orde alfabética teriamos por exemplo:
:: "MESA"= 7 \cdot 26^3+8 \cdot 26^2+9 \cdot 26+14 = 128688  

En calquera caso o número resultante pode ser demasiado pequeno, o que podería producir un texto cifrado que non sexa seguro. Para iso adóitase aplicar un esquema de recheo (exemplo  PKCS#1v1.5, o cal está xa roto, ou OAEP descrito en PKCS#1v2.0)

## Tipos de cifraxe segundo as súas claves 
En esquemas de clave simétrica, as claves de cifraxe e descifraxe son as mesmas. As partes comunicantes deben ter a mesma clave para lograr unha comunicación segura. Un exemplo dunha clave simétrica é a máquina Enigma do exército alemán. Había configuracións clave para cada día. Cando os aliados descubriron como funcionaba a máquina, puideron descifrar a información codificada dentro das mensaxes tan axiña como puideron descubrir a clave de cifraxe para as transmisións dun día determinado. 

### Cifraxe asimétrica 
Nos esquemas de cifraxe de clave pública, a clave de cifraxe publícase para que calquera poida usar e cifrar mensaxes. Con todo, só a parte receptora ten acceso á clave de descifraxe que permite ler as mensaxes. A cifraxe de clave pública describiuse por primeira vez nun documento secreto en 1973; antes diso, todos os esquemas de cifraxe eran de clave simétrica (tamén chamada clave privada). Aínda que se publicou posteriormente, o traballo de Diffie e Hellman, foi publicado nunha revista cun gran número de lectores, e o valor da metodoloxía describiuse explicitamente e o método coñeceuse como o intercambio de claves Diffie Hellman. unha aplicación de cifraxe de clave pública dispoñible publicamente chamada Pretty Good Privacy (PGP) foi escrita en 1991 por Phil Zimmermann e distribuída gratuitamente co código fonte. PGP foi comprado por Symantec en 2010 e actualízase regularmente. A este tipo de cifraxe tamén se lle chama **criptografía de clave pública** ou **PKE** (do inglés *Public-Key Encryption*). Os métodos máis coñecidos deste tipo de cifraxe son o RSA e ElGamal.

A utilización dun sistema simétrico ou asimétrico depende das tarefas a cumprir. A criptografía asimétrica presenta dúas vantaxes principais: suprime o problema de transmisión segura da clave e permite a firma electrónica. Non substitúe con todo os sistemas simétricos, xa que os tempos de cálculo son máis curtos cos sistemas simétricos que cos asimétricos.

## Tipos de cifraxe segundo os algoritmos 
Segundo a forma na que operan os algoritmos de cifraxe ou descifraxe, é posible distinguir varios tipos:

* Cifraxe en fluxo: nestes algoritmos a cifraxe realízase bit a bit. Están baseados na utilización de claves moi longas que son utilizadas tanto para cifrar como para descifrar. Estas claves poden estar predeterminadas (caderno dun só uso) ou xerarse usando un xerador de claves pseudoaleatorias ou RKG (acrónimo do inglés random key generator), que xera unha secuencia binaria pseudoaleatoria a partir dunha clave de inicialización K. Ás veces, no cálculo da clave pseudoaleatoria tamén intervén a mensaxe cifrada até ese momento. Por outra banda, o cifrador propiamente dito: habitualmente neste tipo de algoritmos hai que manter en segredo tanto a clave como o cifrador.
* Cifraxe por bloques: neste tipo de algoritmos, a cifraxe realízase bloque a bloque. En primeira instancia, descomponse a mensaxe en bloques da mesma lonxitude. A continuación, cada bloque vaise convertendo nun bloque da mensaxe cifrada mediante unha secuencia de operacións. Exemplos típicos de operacións realizadas para conseguir cada mensaxe cifrada son a substitución e a permutación (cifraxe por transposición) de elementos.

: Este tipo de algoritmos poden ser tanto de clave simétrica como de clave asimétrica. Con todo, na bibliografía adoita haber confusión e é frecuente ver casos en que se refiren só a algoritmos de clave simétrica.

### Criptografía clásica 
Na criptografía clásica as cifraxes baseábanse na substitución (cifraxe por substitución), na permutación (cifrado por transposición) ou nunha combinación de ambas as técnicas. Habitualmente, as operacións aplicábanse a bloques aínda que outras veces aplicábanse ao texto plano completo. Había cifraxes por transposición que cambiaban a posición de caracteres ao longo da cadea que tiña que cifrarse. Por exemplo, unha cifraxe podía consistir en permutar e investir a orde dos caracteres, deixando o primeiro carácter na última posición, o último na primeira posición, o segundo en penúltimo lugar etc.

## Tipos de cifraxe segundo as súas propiedades 
Moitas veces agrúpanse os algoritmos de cifraxe en función das súas propiedades ou características. Estes son algúns exemplos:

* cifraxe segura cara a adiante
* cifraxe con limiar
* cifraxe baseada en identidade
* cifraxe negable
* cifraxe con clave illada
* cifraxe maleable

## Notas 
## Véxase tamén 
### Outros artigos 
* Ataque de dicionario

### Ligazóns externas 
* A primeira máquina electrónica Enigma do mundo  
* Vídeo en YouTube
* Cifraxe das mensaxes en liña