Professional Documents
Culture Documents
NDICE
I. INTRODUCCIN
II.HISTORIA DE LA CRIPTOGRAFA
III.
IV.
CIFRADO DE TRANSPOSICIN
A. TRANSPOSICIN
B. TRANSPOSICIN POR FILAS
C. TRANSPOSICIN POR COLUMNAS
D. TRASPOSICIN INVERSA Y SIMPLE
E. TRANSPOSICIN DOBLE
F. TRANSPOSICIN POR SERIES
V. ALGORITMO RSA
VI.
ALGORITMO DES
VII.
ALGORITMO AES
MANUAL DE CRIPTOGRAFIA
1
I. INTRODUCCIN
C. ALGORITMO DE CSAR
(A, G) = G
(O, O) = C
(U, A) = U
(T, T) = M
(E, G) = K
(S, A) = S
(C, T) = V
(U, O) = J
E. CIFRADO DE VIGNERE
(E, G) = K
(L, A) = L
(A, T) = T
Y el mensaje cifrado es: GUMCKSVJKLT Se
puede usar una versin diferente de este cifrado.
Consiste en que si alguna vez se llega al fin de
la clave no se regresa al principio de esta, en su
lugar se utiliza el mensaje como clave. As con
el ejemplo anterior, tendramos:
(A, G), (U, A), (T, T), (O, O), (E, A), (S, U),
(C, T), (U, O), (E, E), (L, S), (A, C)
F. CIFRADO PLAYFAIR
G. CIFRADO HILL
La matriz sera:
Ci = mi K
mi = Ci K-1
H. JUSTIFICACIN
14 15 19 22 5 18 5 13 15 19 5 12 12 21
14 5 19
Y se enva a otra persona.
X 1= A
A=
Cuya
[ ]
1 3
2 1
1 4
4
3
2
De
inversa
es:
[ ]
10 10
15
15
1
1
2
A =
15
15
7
1
15
15
5
15
5
15
5
15
R3 :
14 22 5 19 12 5
15 , 5 , 13 , 5 , 21 , 19
19 18 15 12 14 19
define
3
la
transformacin
lineal
L:
R R
AX1 =
[ ][ ] [ ]
1 3
2 1
1 4
[ ]
manera
10
15
2
15
1
15
anloga:
4 14
135
3 15 = 100 = L( X 1)
2 19
112
ecuaciones
[ ][ ]
1
[ ][ ]
[ ][ ]
[ ][ ]
[ ][ ]
104
5
68 = 13
87
15
131
12
X 5= A1 87 = 21
124
14
X 6 =A
138
5
86 = 19
139 19
[ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ]
las
X2
[ ][ ]
109
22
A1 103 = 5
78
18
22
109
5
104
19 82
12
131
5
138
A. =
TRANSPOSICION
=
,
A
=
,
A
=
,
A
,
A
=
5
103
13
68
5
79
21
87
19
86
18
78
15
87
12 63
14 124
19
139
resuelve
5
15
135
14
5
=
100
15
15
112
19
5
15
82
19
X 4 = A1 79 = 5
63
12
[ ][ ][ ][ ][ ][ ]
y
[ ]
X 3= A
10
15
135
1
100 =
15
112
7
15
x i=A
L ( X i)
1
S
U
D
F
M
I
2
E
R
A
I
O
A
C
3
G
I
D
N
R
T
A
a) PROCESO DE CIFRADO
b) PROCESO DE DESCIFRADO
Q
4
A
14
1
5
1
6
this.TxT = TxT;
aRpci
tdroa
aval
xxixad
1
7
this.Sp = Sp;
1
8
while(this.TxT.length()%Sp !=0)
19
this.TxT+="x";
20
Seed = Gen(Sd,Sp);
Cdigo
view source
print?
1
/*
2
1
if(Seed[0]==-1){//generamos Seed
por defecto..
2
2
23
for(int n = 0;n<Sp;n++)
24
Seed[n]=n;
5
6
Phicar
project-ric.org
phicar@yashira.org
*/
10
import java.util.*;
11
25
26
2
7
2
8
2
9
String
tmp[][]
=
String[TxT.length()/Sp][Sp];
3
0
for(int n = 0;n<TxT.length();n++)
3
1
tmp[(int)Math.floor((double)n/
(double)Sp)][n
%Sp]=String.valueOf(TxT.charAt(n))
;
for(int n = 0;n<Seed.length;n++)
12
13
new
2
3
3
for(int x =0;x<(TxT.length()/Sp);x+
+)
3
4
Cifrado+=tmp[x][Seed[n]];
35
return Cifrado;
36
3
7
3
8
3
9
4
0
String DesCifrado="";
for(int n=0;n<Seed.length;n++)
42
//String DesCifrado="";
4
3
String
tmp[][]
=
String[TxT.length()/Sp][Sp];
new
4
4
String
ord[][]
=
String[TxT.length()/Sp][Sp];
new
4
7
4
8
5
2
ord[y][n]=tmp[y]
[pp.indexOf(String.valueOf(n))];
5
3
for(int
n
=
0;n<(TxT.length()/Sp);n++)for(int x
=
0;x<Sp;x+
+)DesCifrado+=ord[n][x];
5
4
return DesCifrado;
5
5
5
6
String pp = "";
pp+=String.valueOf(Seed[n]);
4
6
for(int y = 0;y<(TxT.length()/Sp);y+
+)
41
4
5
5
1
for(int
n
=
0,c=0;(n+
(TxT.length()/Sp))<=TxT.length();c+
+,n+=(TxT.length()/Sp)){
String tt = TxT.substring(n,n+
(TxT.length()/Sp));
5
7
5
8
5
9
for(int n = 0;n<Sd.length();n+
+)if(charset.indexOf(Sd.charAt(n))=
=-1){
6
0
System.err.println("Seed Mala");
61
return nula;
62
6
3
for(int n = 0;n<Sp;n++)
6
4
if(Sd.indexOf(String.valueOf(n))==1){
for(int x=0;x<tt.length();x++)
tmp[x]1=""+tt.charAt(x);
6
5
System.err.println("Seed Mala");
return nula;
49
6
6
50
for(int n = 0;n<Sp;n++)
7
6
8
INVERSO
StringTokenizer
tok
StringTokenizer(Sd,",");
new
6
9
if(Sp!=tok.countTokens()){
7
0
System.err.println("Seed Mala");
A.
Cifrar
1.
2.
Declarar un arreglo que contenga el
mensaje en claro
71
return nula;
72
3.
Almacenar cada caracter en una casilla
del arreglo declarado
4.
Recorrer el arreglo declarado
comenzando en la ltima posicin, hacia el
inicio
7
3
7
4
for(int n = 0;n<epa.length;n++){
7
5
epa[n]=Integer.parseInt(tok.nextTo
ken());
7
6
if(epa[n]>=Sp){
5.
Mostrar cripto.
B.
Descifrar
1.
2.
3.
Almacenar cada carcter en una casilla
del arreglo declarado
7
7
System.err.println("Seed Mala");
7
8
return nula;
4.
Recorrer el arreglo declarado
comenzando en la ltima posicin, hacia el
inicio
5.
79
SIMPLE
80
A.
Cifrar
Leer el texto que se desea cifrar
81
return epa;
1.
82
2.
Almacenar en un arreglo el mensaje en
claro
83
3.
Leer el nmero de registros donde se
almacenar el texto
D. TRANSPOSICION INVERSA Y SIMPLE
4.
5.
Dividir el tamao del mensaje en claro
entre el nmero de registros
6.
Validar que el residuo sea un nmero
exacto, de lo contrario se procede a rellenar con
X
7.
Recorrer el mensaje en claro carcter por
caracter, almacenando cara carcter en cada
registro[i++]
8.
9.
Mostrar cripto.
B.
Descifrar
1.
2.
3.
Dividir la longitud del cripto entre el
nmero de registros
4.
Obtener substring del tamao obtenido en
el paso anterior
5.
Concatenar en una nueva cadena, las
posiciones de los substrings obtenidos en el
paso anterior
6.
Simple
star : cifradoTransposicin
cifradoBegin () : void
cifradoSimple ( msjClaro : String, numRegistros : int) : void
descifradoBegin () : void
descifradoSimple (cripto : String , numRegistros : int ) : void
rellenarMensaje ( texto : String , numRegistros : int ) : void
Diagrama de flujo
Desarrollo
Para
la ejecucin
del
algoritmo
de
Transposicin es necesario tener instalado el
jdk y estos sern ejecutables. Se anexa el enlace
de
descarga
correspondiente.
https://www.dropbox.com/s/uy2j1ljl7y4962
e/cifradoTransposicion.jar
E. TRANSPOSICION DOBLE
Proceso de cifrado
SEAAA NSECX
Primera iteracin
R U P O C T E I N N YM E M R T N E N T I R S C U D A T O F O
1
R S R D OE E TI L I G I P E XU C U R NS E AA A N S E CX
2
Primera iteracin
R1 I
T R E E L R D E E E M S R N E E M N O
R2 N E N T S A E D R D S A G A D D L U D
Segunda iteracin
Que se obtiene
R U S P R O D C O T E E E I T N I N L Y I MG E I MP R E T X
1
ITREELRDEEEMSRNEEMNONENTSAEDR
DSAGADDLUD
R N UE C NUT R I NR S S E C A UA DAA NT S O E F C OX
2
Segunda iteracin
R1
R2
Proceso de cifrado
B L
Proceso de descifrado
Cripto
=
UTSDS
EATNIOOAOEEQUEIPSBE
LECRLSAOL
UEMIS
E S
36 37 38 39 40
Cripto
=
ALZIARINMOEOGNASTLMSEOLUVAJTEC
EOSIKILTROPRSUD
I K I
L T R O P R S U D
22 24 26 27 28 32 33 34 36 38 39 42 44
AREAS DE OPORTUNIDAD
Correo electrnico
DESCRIPCION Y PSEUDOCODIGO
d
( mod n ) =c 2753
decript ( c )=c
(mod 3233)
EJEMPLO
p=61
q=53
n=pq=3233
e=17
d=2753
1 n primo privado
2 n primo privado
producto pq
exponente pblico
exponente privado
(mod n)=m17
encript ( m )=mc
(mod 3233)
Donde m es el texto sin cifrar. La funcin de
descifrado es:
5.
5
0
4
2
3
4
2
6
1
8
1
0
0
2
6
0
5
2
4
4
3
6
2
8
2
0
1
2
0
4
6
2
5
4
4
6
3
8
3
0
2
2
1
4
0
6
6
4
5
6
4
8
4
0
3
2
2
4
1
6
0
8
5
7
4
9
4
1
3
3
2
5
1
7
0
9
0
1
5
9
5
1
4
3
3
5
2
7
1
9
1
1
0
3
6
1
5
3
4
5
3
7
2
9
2
1
1
3
0
5
6
3
5
5
4
7
3
9
3
1
2
3
1
5
0
7
40
39
38
37
36
35
34
33
08
07
06
05
04
03
02
01
48
47
46
45
44
43
42
41
16
15
14
13
12
11
10
09
56
55
54
53
52
51
50
49
24
23
22
21
20
19
18
17
64
63
62
61
60
59
58
57
32
31
30
29
28
27
26
25
32 1
4
8
12
16
5 6 7 8 9
9 10 11 12 13
13 14 15 16 17
25
24
24
20
24
28
25
21
25
29
21
22 23 24 25
26 27 28 29
30 31 32 1
16
29
1
5
2
32
18
22
7
12
15
18
8
27
13
11
20
28
23
31
24
3
30
4
21
17
26
10
14
9
6
25
Tabla 4. Permutacin P.
Permutacin EP2
57 49 41 33 25 17 9
14 17 11 24 1 5
1 58 50 42 34 26 18
3 28 15 6 21 10
10 2 59 51 43 35 27
23 19 12 4 26 8
19 11 3 60 52 44 36
16 7 27 20 13 2
63 55 47 39 31 23 15
41 52 31 37 47 55
7 62 54 46 38 30 22
30 40 51 45 33 48
14 6 61 53 45 37 29
44 49 39 56 34 53
21 13 5 28 20 12 4
46 42 50 36 29 32
Ek(Ek(M)) = M
A parte de estas, existen otro grupo de llaves
llamadas semidbiles. Estas llaves nicamente
generan dos llaves internas distintas, es decir,
una ms que las llaves dbiles. De esta forma,
cada una de estas dos llaves se repetir ocho
veces.
En este caso, si expresamos en binario los
valores de los registros L0 y R0 del generador
de llaves, tendramos que encontrarnos con
series de la forma C = 0101...01 o D= 1010...10
y su correspondiente D o C = 0000...00,
0101...01, 1010...10 o 1111...11. Pero sin duda
alguna como mejor se entiende esto es a travs
de un ejemplo.
Supongamos que C0 = 1010...10 y D0 =
0101...01. En la siguiente tabla se puede
observar como afectan los desplazamientos del
generador de claves a este tipo de llaves:
i
Despl.
Registro Li
Registro Ri
1010...10
0101...01
0101...01
1010...10
1010...10
0101...01
1010...10
0101...01
1010...10
0101...01
1010...10
0101...01
1010...10
0101...01
1010...10
0101...01
1010...10
0101...01
0101...01
1010...10
10
0101...01
1010...10
11
0101...01
1010...10
12
0101...01
1010...10
13
0101...01
1010...10
14
0101...01
1010...10
15
0101...01
1010...10
16
1010...10
0101...01
01 01 01 01 01 01 01 01
1F 1F1F1F 0E 0E0E0E
E0 E0E0E0 F1 F1F1F1
FE FEFEFEFEFEFEFE
Dk(Dk(M)) = M
DESCRIPCION Y PSEUDOCODIGO
Toma la matriz
[aij ]
resultado la matriz
[k ij ] y da como
[aij ] [aij ] , es decir
y
O en representacin matricial
Finalmente tenemos
0010 0001 = 21
Que puede obtenerse de la tabla directamente en
la interseccin de la fila 7 y la columna b.
Otro ejemplo a7
a7 = 10100111 = x7 + x5 + x2 + x + 1
a7-1 = x6 + x3 = 0100 1000 = 48
Se tiene de la tabla de inversos, en la
interseccin de la fila a y la columna 7, y la
transformacin lineal.
ShiftRows
La transformacin ShiftRows se aplica a la
matriz estado, aplicando corrimientos a sus
columnas. Se aplica a la matriz [aij ] , shifts
(corrimientos izquierdos circulares de bytes) a
los renglones, de la siguiente manera, recorre 0
bytes al primer rengln, 1 byte al segundo
rengln, 2 bytes al tercer rengln y 3 bytes
corridos al cuarto rengln.
La transformacin ShiftRows, se define de la
siguiente manera:
[aij ]
constante en
8
4
GF ( 2 ) [ X ] /( x +1) .
mueve
dos
bytes
Key Schedule
Aunque Rijndael est diseado para manejar
muchos casos de longitudes de claves y de
bloques, finalmente AES definido en el estndar
determina solo permitir los casos de bloques de
128 bits, y longitudes de claves de 128, 192 y
256. Por otra parte la longitud de 128 bits,
garantiza la seguridad del sistema hasta despus
del ao 2030, por lo que slo consideraremos el
caso de claves 128 bits, aunque los algoritmos
pueden ser extendidos fcilmente a los casos
restantes.
El algoritmo de extensin de la clave es el
siguiente:
Quedando como
Unsigned char clave [4] [4] = {0x2b, 0x28, 0xab,
0x09,
0x7e, 0xae, 0xf7, 0xcf,
0x15, 0xd2, 0x15, 0x4f,
0x16, 0xd6, 0x88, 0x3c};
Algoritmo de extensin
Key Expansion (byte Key [4 * N k] Word [Nb * (Nr +
1)]
{
For (i = 0; i < Nk ; i++)
if
(i%Nk
==
0)
temp=SubByte(RotByte(temp))^Rcon[i/Nr];
En este caso Nb = Nk = 4, y Nr = 10
La parte verde verifica que
For (i=0; i<4; i++)
W [i] = (key [4*i], key [4*i+1], key [4*i+2],
key [4*i+3]);
W [0] = (key [0], key [1], key [2], key [3]);
W [1] = (key [4], key [5], key [6], key [7]);
W [2] = (key [8], key [9], key [10], key [11]);
W [3] = (key [12], key [13], key [14], key [15]);
}
Se observa que si i es mltiplo de 4, entonces
W[i] sigue un procedimiento especial, en otro
caso simplemente W[i] es = W [i ~ 1] Xor W [i
~ 4].
En el caso de i = 4 se tiene lo siguiente:
{ temp = W[3];
If (4%4 ==0) temp = SubByte (RotByte (temp))
^ Rcon [4/4];
W [4] = W [0] ^ temp;
RC [1] = 1;
RC [1] = xRC [i ~ 1] = x i~1;
Es decir, desde el punto de vista de polinomios:
RC [1] = 1
RC [6] = X5
= 20
RC [2] = X = 2
RC [7] = X6 = 40
2
RC [3] = X = 4
RC [8] = X7 = 80
RC [4] = X3 = 8
RC [9] = X8 = X4 +
3
X + X+ 1 = 1b
RC [5] = X4 = 10
RC [10] = X9 = X5 +
X4 + X2 + x = 36
As es xor queda de la siguiente manera:
SubByte (RotByte (temp)) ^ Rcon [1];
}
Entonces el clculo de W[4], es el siguiente:
1) temp= RotByte (temp)
2) temp = SubByte (temp)
3) temp = temp xor Rcon [4/4]
{ temp = W[3];
if (4%4 == =) temp = SubByte (RotByte (temp))
^ Rcon [4/4];
W [4] = W[0] ^ temp;
}
W [4] = W [0] ^ temp;
Bloque de entrada
Clave=Estado
Intermedio 1
Para cada elemento del bloque de entrada se
realiza una operacin XOR con su equivalente
en posicin del bloque de clave.
Se aplica la funcin ByteSub
Estado Intermedio 1 S-box Estado Intermedio 2
VIII. REFERENCIAS
[1]Pino Caballero Gil, Introduccin a la Criptografa, 2da
edicin. 2003
[2]Basurto-Quijada R. (2008), Implementacin de un
Criptosistemas de Llave Pblica Llave Privada Basado
en AES y ECC. (Tesis de maestra indita). Universidad
Jurez Autnoma de Tabasco, Tabasco, Mxico.
[3]Simon Sinhg. The code book. How to make it, break it,
hack it, crack it (2001. De la corte Press.