Está en la página 1de 80

Ejercicios criptografía LIBRO RAMA

1.5. Criptografía de clave pública

Ex1
Alicia y Bernardo utilizan como grupo Z*13 y eligen como generador del mismo a = 4.
Determinar qué número secreto se intercambiarán por el cambio de clave de Diffie-Hellman, si
Alicia elige como número aleatorio a = 5 y Bernardo elige b = 2.

Solución:

Consideramos Z*3, α = 4, a = 5 y b = 2. Por el protocolo de Diffie-Hellman, se tiene que:

a) A elige a = 5, calcula α^ a= 4^5 (mod 13)= 10, y envía 10 a Bernardo.

b) B elige b = 5, calcula α^ b = 4^2 (mod 13) = 3, y envía 3 a Alicia.

c) A recibe 3 y calcula 3^a = 3^5 (mod 13) = 9.

d) B recibe 10 y calcula 10^b = 10^2 ( mod 13) = 9. El número secreto compartido por Alicia y
Bernardo es a ^(a-b) = 4^(5- 2 )(mod 13) = 12.

Ex2

Romper el protocolo utilizado por Alicia y Bernardo en el problema anterior, sabiendo que los
números que se intercambian son 3 y 10, respectivamente.

Solución:

Para romper el protocolo anterior, dado que los números que se intercambian son muy
pequeños, se puede proceder con el ataque por fuerza bruta:

4^1 =4 (mod 13), 4^2 = 3 (mod 13), 4^3 = 12 (mod 13),

4^4 =9 (mod 13), 4^5 = 10 (mod 13), 4^6 =1 (mod 13),

4^7 = 4 (mod 13), 4^8 = 3 (mod 13), 4^9 = 12 (mod 13),

4^10= 9 (mod 13), 4^ 11= 10 (mod 13), 4^12= 1 (mod 13).

Como Alicia ha enviado el 10, se sabe que eligió a = 5 u 11, mientras que Bernardo eligió b = 2
u 8. En este problema no importa el valor concreto elegido por cada uno puesto que

α ^(a-b)= 4^(5 -2) = 4^(5 -8) = 4^(11-2) = 4(11 -8) = 12 (mod 13)

1
Ex3
Extender el protocolo del cambio de clave de Diffie-Hellman para el caso en el que haya tres
participantes.

Solución :

La extensión del protocolo del cambio de clave de DiffieHellman para el caso de tres
participantes es como sigue:

a) Alicia elige un número aleatorio grande, a; calcula a = α^ a (mod p) y se lo envía a


Bernardo.
b) Bernardo elige un número aleatorio grande, b;
calcula b = α^ b(mod p) y se lo envía a Carlos.
c) Carlos elige un número aleatorio grande, c;
calcula c = α^ c (mod p) y se lo envía a Alicia.
d) Alicia calcula C = c^a (mod p) y se lo envía a Bernardo.
e) Bernardo calcula A = a^ b (mod p) y se lo envía a Carlos.
f) Carlos calcula B = b^c (mod p) y se lo envía a Alicia.
g) Alicia calcula k = B^a (mod p).
h) Bernardo calcula k= C^b (mod p).
i) Carlos calcula k = A^ c (mod p).
El secreto compartido por Alicia, Bernardo y Carlos es entonces: k = A^ c = (a^b)^c =
B^ a = (b^c) ^a = C^b = (c^a)^b = α^( a* b* c)(mod p).

Ex4:

Si se utiliza el criptosistema RSA, determinar el criptograma para el siguiente mensaje

M= «1521674902», teniendo en cuenta que los parámetros

del destinatario, Bernardo, son: nB = 143, eB = 7, y dB = 103,

y los del remitente, Alicia, son: nA = 161, eA = 31 y dA= 115.

Solución :

Dado que nB= 143 tiene tres dígitos y M= «1521674902» tiene diez, se debe dividir el mensaje
a cifrar en grupos de dos dígitos, por lo que el mensaje a cifrar será la siguiente cadena de
números: M= M1, M2, M3, M4, M5 = «15, 21, 67, 49, 02». Los criptogramas de cada una de las
partes del mensaje son:

C1 = 15^7 (mod 143)= 115

C2 = 21^7 (mod 143)= 109

C3 = 67^7 (mod 143) = 89

C4=49^7 (mod 143)= 36

2
C5=02^7 (mod 143)= 128

Por tanto, el criptograma será C = «115, 109, 89, 36, 128».

Ex5:

Bernardo utiliza el criptosistema RSA con la siguiente clave pública: (nB, eB) = (2947, 179).
Determinar el criptograma que debe enviar a Alicia si el mensaje es M = « M A N D A D I N E R
O » . En este caso, las letras A-Z del alfabeto se codifican con 0-25, el punto es el 26 y el
espacio en blanco es el 27.

Soulucion :

Como se utilizan 28 caracteres, tenemos que determinar la longitud de cada parte del
mensaje. Dado que 28^2 = 784 < nB = 2947 < 21952 = 28^3, resulta que el mensaje hay que
romperlo en grupos de dos caracteres. Luego hay que codificar cada uno de estos grupos para
que sea un número menor que nB. Finalmente se procede a determinar el criptograma de cada
grupo, y se obtiene el criptograma resultante:

M = «MANDA DINERO»,

M'= «MANDA _DINERO»,

M1= MA = M* 28^1 +A*28^0 = 12*28 + 0 = 336

-> 336^179 (mod 2947) = 7 = 0 + 0 + 7= AAH=C1

M2 = ND = N * 28^1 + D*28^0 = 13 *28 + 3 = 367

-> 367^179 (mod 2947) = 397 = 0*28^2 + 14 *28 ^1+ 5*28^0 = AOF= C2,

M3 = A_ = A *28^1 + _*28^0 = 0 * 28 + 27 = 27

-» 27^179 (mod 2947) = 139 = 0*28^2 + 4 *28^1 + 27 *28^0= AE _ = C3,

M4=DI = D *28^1 + I*28^0= 3 *28 + 8 = 92

-> 92^179 (mod 2947) = 1954 = 2 *28^2 + 13 * 28^1 + 22*28^0 = BNW=C4,

M5 = NE = N * 28^1 + E*28^0= 13 *28 + 4 = 368

-> 368179 (mod 2947) = 2438 = 2 *28^2 + 3 *28 ^1+ 3*28^0 = CDD = C5,

M6= R O = R* 28^1 + O*28^0 = 17*28+ 14 = 490

-> 490^179 (mod 2947) = 56 = 0 *28^2+ 2*28^1 + 0*28^0 = ACA= C6,

C’ = «AAHAOFAE_BNWCDDACA»,

C = «AAHAOFAE BNWCDDACA».

3
Ex6:

Si Alicia tiene como clave pública (nA, eA) = (2773, 17), determinar el criptograma que
corresponde a la respuesta al mensaje del problema anterior: «NO TENGO».

Solución :

Repitiendo el procedimiento llevado a cabo en el problema anterior, se tiene que la respuesta


de Alicia es:

M = «NO TENGO»

M'= «NOTENGO»

M1 = NO = N*28^1 + O*28^0 = 13 *28+ 14 = 378

-> 378^17 (mod 2773) = 1117= 1*28^2 + 11 *28^1 + 25*28^0 = BLZ = C1

M2 = _T = _ *28 ^1+ T*28^0 = 27 *28 + 19 = 775

-> 775^17 (mod 2773) = 124 = 0*28^2 + 4 * 28^1 + 12*28^0 = AEM=C2,

M3 = EN=E*28^1 + N*28^0 =4 * 28 + 13= 125

-> 125^17 (mod 2773) = 164 = 0*28^2 + 5 *28^1 + 24*28^0 = AFY=C3,

M4= GO = G *28^1+ O*28^0 = 6 *2 8 + 14= 182

-> 182^17 (mod 2773) = 2278 = 2 * 28^2 + 25 * 28^1 + 10*28^0 = BZK= c4,

C = «BLZAEMAFYBZK».

Ex7

Tratar de romper las claves de Alicia y Bernardo de los dos problemas anteriores.

Solución:

Para romper las claves de Alicia y Bernardo de los dos criptosistemas anteriores, bastará con
factorizar n = p * q para luego determinar φ(n) = (p - 1) (q - 1) y el inverso de e módulo φ(n)
mediante el algoritmo de Euclides extendido.

nB = 2947 = 7 *421, φ (2947) = 6 * 420 = 2520, dB = 1619.

nA = 2773 = 47 * 59, φ (2773) = 46 • 58 = 2668, dA = 157.

Ex8:

Alicia y Bernardo han decidido cambiar sus claves para estar más seguros a la hora de
intercambiarse mensajes. Sus nuevas claves públicas son, respectivamente,

4
(nA,eA) = (342723272091234212791, 13)

(nB, eB) = (132954765701773295963, 1031)

¿Podrías romper ahora sus claves? ¿Cuál de las dos claves escogerías?

Solución:

Se tiene que:

nA =342723272091234212791 = 89 * 3850823281923979919,

φ (nA) = 3850823281923979918, dA =52134222893740035813.

nB =132954765701773295963 = 148661281 *894346966523,

φ (nB) =132954764807277668160 , dB =70152659607331766711.

Es preferible la clave de Bernardo, porque sus dos primos están más cercanos entre sí que los
de la clave de Alicia, que tiene un número primo muy pequeño.

Ex9:( los datos se encuentran en Wikipedia)

¿Serías capaz de romper un criptosistema cuya clave pública contuviera como n al siguiente
número (este número se conoce como RSA-129)?

n= 11438 16257 57888 86769 92357 79976 14661

20102 18296 72124 23625 62561 84293 57069

35245 73389 78305 97123 56395 87050 58989

07514 75992 90026 87954 3541

Solución:

La factorización del número RSA-129 es la siguiente:

n= 11438 16257 57888 86769 92357 79976 14661

20102 18296 72124 23625 62561 84293 57069

35245 73389 78305 97123 56395 87050 58989

07514 75992 90026 87954 3541

= 34905 29510 84765 09491 47849 61990 38981 33417 76463 84933 87843 99082 0577

* 32769 13299 32667 09549 96198 81908 34461 41317 76429 67992 94253 97982 88533.
RSA-129 tiene 129 dígitos decimales (426 bits)

La factorización fue encontrada usando el algoritmo de criba cuadrática.

5
El desafío de factorización incluía un mensaje encriptado en RSA-129, el cual, una vez
desencriptado, decía "The Magic Words are Squeamish Ossifrage" (del inglés «Las
Palabras Mágicas son Quebrantahuesos Aprensivos»).

Ex10:

Trata de romper., sin la ayuda de un ordenador, la siguiente clave para el criptosistema RSA:
(n, e) = (536813567, 3602561). {Nota: los primos de la factorización de n son un tanto
especiales.)

Solución :

Se verifica que n = 536813567 = 8191 * 65537. Los factores de n son especiales, puesto que el
primero es un primo de Mersenne: 8191 = 2^13 - 1, mientras que el segundo es un primo de
Fermat: 65537 = 2^16 + 1. Por último, se tiene que el inverso de e = 3602561

3602561 ( módulo 536739840)=d

φ (n) = 536739840 es d= 201934721

Ex11 :

Enviar el mensaje M = «16» a un amigo que trabaja con el criptosistema de ElGamal. Este
amigo utiliza los siguientes parámetros: el primo es p = 23, el generador del grupo Z*23 es α=
5 y su clave pública es 19.

Solución :

Siguiendo el protocolo de ElGamal con los parámetros p = 23, α = 5, clave pública 19 = 5^b
(mod 23), y M= «16», se tiene que:

a) Se elige un númeo aleatorio, h = 9, se calcula α ^h (mod p) = 5^9 (mod 23)= 11.

b) Se determina (α^ b)^h (mod p)= (11^9)^9 (mod 23) = 10.

c) Se calcula M * (α ^b)^h (mod p) = 16 *10 (mod 23) = 22.

d) Se envía el criptograma correspondiente: (α^ h, M * α ^(b*h)) = (11,22).

Ex12:

Descifrar el mensaje que recibe el amigo del problema anterior, si su clave privada es a = 15.

Solución :

Para recuperar el mensaje anterior se procede como sigue:

a) Se calcula (a ^h)^b(mod p) =11^15 (mod 23) = 10.

6
b) Se determina el cociente:

M * a^( b *h)/ α ^(h * b)(mod p) = 22/10 (mod 23) = 22 *7 (mod 23)= 16 = M

Ex13:

En el criptosistema de ElGamal se considera el número primo p = 65537 y el grupo Z*p con


generador α = 5. Enviar a Bernardo, cuya clave pública es 23467, un mensaje en el que se
indique el tipo de moneda a utilizar en determinada transacción, o sea, M= «PTA ».

Solución:

Dado que el mensaje, M= «PTA», tiene tres letras, y como 26^3= 17576 < p =
65537<26^4=456976, no hace falta dividir el mensaje en bloques.
Se tiene que M=PTA = P * 26^2 + T *26^1 + A*26^0 = 15 * 26^2 + 19 *26 + 0 =
10634, por lo que:
a) Se elige h = 21 y se calcula 5^21 (mod 65537) = 37684.
b) Se calcula 23467^21 (mod 65537) = 42782.
c) Se determina 10634 * 42782 (mod 65537) = 51471.
d) Se obtiene el criptograma correspondiente: (37684, 51471).
Escribiendo en letras el par anterior, se tiene que:

37684 = 2 * 26^3+ 3 * 26^2 + 19 * 26^1+10*26^0 = CDTK


51471 = 2 * 26^3+24 * 26^2 +3* 26^1+17*26^0 = CYDR
Por tanto, la pareja a enviar es «(CDTK, CYDR)».

Ex14:

Intentar romper el criptosistema anterior, es decir, determinar b de modo que 5^b = 23467
(mod 65537).

Solución:

Se tiene que b = 36151 dado que log5 23467 (mod 65537) = 36151, es decir, 5^36151 = 23467
(mod 65537)

Ex15:

Utilizando la codificación usual de letras a dígitos y empleando el criptosistema de ElGamal, se


recibe el siguiente criptograma:
(82746592004375034872957717,243369075971743007328324134) Si se trabaja en un cuerpo
de 297262705009139006771611927 elementos (observe que es un número primo) y si la clave
privada es a = 10384756843984756438549809, descifrar el criptograma.

Solución:

Dado que el mensaje recibido es

7
(a ^h, M * α^( h *a)) = (82746592004375034872957717, 243369075971743007328324134),
se eleva el primer número a a = 10384756843984756438549809 y luego se divide el segundo
entre el valor obtenido, todo ello módulo el número primo p =
297262705009139006771611927, es decir,

(α ^h)^a (mod p) = 82746592004375034872957717^10384756843984756438549809 (mod


297262705009139006771611927) =10277040981937509303538788.

[M* α ^(h* a)/ α^(a*h)] (mod p)

=243369075971743007328324134/10277040981937509303538788
mod(297262705009139006771611927)= 7466224520185525333630.

Ahora, expresando en base 26 el mensaje recibido, se obtiene el texto original:

7466224520185525333630= + 4 *26^15 3 + 11 *26^14 + 19 * 26^13+ 4 * 26^12+ 14 * 26^11+


17 * 26^10 8 + 4 *26^9 + 12 * 26^8 + 0 * 26^7 + 4 * 26^6 + 18 *26^5+ 5 *26^4+ 0 * 26^3+ 11 *
26^2+ 18 * 26^1 +14*26^0=ELTEOREMAESFALSO.

es decir, «EL TEOREMA ES FALSO».

1.4. Criptografía de clave secreta

Ex 16:

Utilizando el cifrado en flujo con la cadena de bits

K = 01100011000000010111100000101000

01111110011110011110011001011010

cifrar el mensaje « L A D R I L L O » usando el código ASCII.

Solución:

El mensaje «LADRILLO», en código ASCII, concatenando todas las letras es:

M= 01001100010000010100010001010010

01001001010011000100110001001111

Sumando xor, ahora, bit a bit mod2 el mensaje con la cadena cifrante K, se obtiene el mensaje
cifrado C:

M = 01001100010000010100010001010010

01001001010011000100110001001111,

K = 01100011000000010111100000101000

01111110011110011110011001011010,

C = 00101111010000000011110001111010

8
00110111001101011010101000010101

Ahora, escribiendo el criptograma usando el código ASCII, se tiene

el mensaje a enviar: «/@ < z75□».

PARA PASAR DE LETRA A BINARIO

https://www.asciitohex.com/

pasar de binario a ASCII


https://www.calculadoraconversor.com/binario-a-ascii/

Ex17:

Obtener las secuencias cifrantes, utilizando el generador en congruencia lineal xi+1= (5xi+ 3)
(mod 16), para las semillas x0 = 1, 2 y 5.

Solución:

Se sustituye y se calcula.

Las secuencias cifrantes generadas por xi+1= (5xi+ 3) (mod 16) son las siguientes:

x0 = 1 ->1, 8, 11, 10,5, 12, 15, 14, 9, 0,3,2, 13,4, 7, 6, 1,8, ...
x0 = 2 -> 2, 13,4, 7, 6, 1,8, 11, 10,5, 12, 15, 14, 9, 0,3,2, 13, ...
x0 = 5 -> 5, 12, 15, 14, 9, 0,3,2, 13,4, 7, 6, 1, 8, 11, 10, 5, 12, ...

Ex18:

Con la secuencia cifrante cuadrática obtener las secuencias cifrantes para todas las semillas x0
y para todos los valores primos p= 17, 19 y 23.

Solucion:

Las órbitas obtenidas para el generador xi= 5xi-1^2 (mod p) con p= 17, 19 y 23, se pueden
observar en las siguientes tablas:

9
10
1.3. Complejidad computacional

Ex20:

Expresar el número binario 11001001 (2 en base decimal.

Solución :

Se verifica lo siguiente: 11001001(2 = 1*2^7 + 1*2^6 + 0*2^5 +0*2^4 + 1*2^3 + 0 *2^2 +0*
2^1 +2*2^0=201

Convertidor Binario a Decimal: Convierte entre Binario y Decimal en línea (converter.page)

Ex21:

Calcular 160 * 199 en base 7

Solución:

Yo lo hago asi: calculo la multiplicion de los 2 en decimal y lo que me da lo paso a base 7

160*199=31840

31840(10 = 161554(7

https://pinetools.com/es/conversor-base-numerica

Ex22:

Calcular 11001001 (2 : 100111(2.

Solución :

https://miniwebtool.com/es/binary-calculator/

11001001 (2 : 100111(2 = 101.001001110110001001 calculado con la pagina web

Se pasan los nr a decimal y se hace la división

Después el resultado se pasa otra vez a binario

11001001 (2 =201(10

100111(2=39(10

201:39=5+6

11
5(10 =101(2

6(10 = 110(2

11001001 (2 = 100111(2 *101(2 + 110(2

Ex23:

Expresar 10^6 en las bases 2, 7 y 9.

Solución:

Primero : 10^6=1 000 000(10

1 000 000(10=11110100001001000000(2

1 000 000(10=11333311(7

1 000 000(10 = 1783661(9

Ex24:

Si se utiliza la base b = 26, se pueden usar las letras del alfabeto en lugar de números, sin más
que asignar a las letras A-Z del alfabeto internacional, los números 0-25. Con esta convención,
determinar los valores en base decimal de «MAL(26» y de «M. AL26».

Solución:

12
MAL(26 = 12*26^2 + 0* 26^1 +11*26^0 = 8123

M.AL(26 = M * 26^0 +A * 26^(-1) + L *26^(-2) =12 +0+11/676 =8123/676.

Ex 25:

Determinar los valores de las siguientes constantes en base 2 y en base 26:

a) n= 3,1415926...

b) e = 2,7182818...

Solución :
a) n= 3.1415926 ... = 11.001001000011111 ...(2.

b) e = 2.7182818 ... = 10.101101111110000 ...(2.

Ex 26:
Dividir «131B 6C 3(16» entre «1A2F(16».

Solución:

https://www.calculadoraconversor.com/hexadecimal-a-decimal/
131B 6C3(16= 1 A 2 F (16-BAD(16.

Convertimos de hexadecimal a decimal


131B 6C3(16 = 20035267(10

1A2F(16 = 6703(10
Hacemos la división en decimal y convertimos el resultado otra vez a hexadecimal
2.989(10 =BAD(16

Ex27:
Estimar el tiempo requerido para convertir un entero A:-bit en su representación en base 10.

Solución:

El algoritmo para convertir un entero k-bit, n, en base 10 es el siguiente: se divide n entre 10 =


1010(2. El resto, que ha de ser uno delos siguientes números: 0, 1, 10, 11, 100, 101, 110, 111,
1000, 1001, será el dígito de las unidades: d0. A continuación se reemplaza n por el cociente
anterior y se repite el proceso señalado anteriormente, obteniéndose el dígito de las decenas:
d1. Este proceso se debe repetir tantas veces como dígitos decimales tenga n, es decir, [log
n/log 10] + 1 = O(k) veces. Por otra parte, el número de operaciones bits necesarias es el

13
siguiente: se han hecho 0(k) divisiones, cada una de las cuales requiere O(4k) = O(k)
operaciones (dividir un número con, a lo más, k bits entre 1010(2, que tiene 4 bits). Por tanto,
el número de operaciones es O ( k^ 2). Como k = O (log n), se puede escribir:

Tiempo (convertir n en decimal) = O (log2 n)

Ex28:

El algoritmo de Euclides extendido proporciona el valor de las constantes u y v de modo que si


d = mcd (a, b), entonces d= u * a + v * b. Determinar el tiempo de ejecución para este algoritmo

Solución:
El procedimiento del algoritmo de Euclides extendido para expresar d = mcd (a, b) = u * a + v *
b, consiste en utilizar la cadena de divisiones del algoritmo de Euclides, comenzando por la
última hasta llegar a la primera, de modo que en cada paso se expresa d en función de los
restos anteriores. En cada paso son necesarias una multiplicación y una suma o una resta, por
lo que el número de operaciones bits es O (log3 a). Así pues, Tiempo(calcular u, v con mcd (a,b)
= d=ua + v b = O(log3 a)

Ex29:
Si se verifica que mcd (a,m) = 1, calcular el tiempo necesario para encontrar el inverso de a
módulo m, es decir, para determinar un entero b tal que a * b = 1 (mod m).

Solución :

Si se verifica que mcd (a, m) = 1, por el algoritmo de Euclides extendido, existen u, v con
mcd(a, m) = d = u * a + v * m, entonces, tomando b = u, se tiene que a * b = 1 (mod m). Por
tanto, se verifica que

Tiempo (calcular el inverso de a módulo m) = O (log^3 m).

Ex 30:

Determinar el tiempo necesario para calcular [raíz de n] siendo n un número muy grande
escrito en binario y si [m] representa el mayor entero menor que m.

Solución:

Para calcular en binario el mayor entero menor que raíz de n, m =[raíz de n], siendo n un
entero k + 1 -bits, muy grande, se procede como sigue: como primera aproximación a m se
toma 1 seguido de [k/2] ceros. A continuación se trata de encontrar los restantes dígitos de m
desde la izquierda hacia la derecha, a partir del 1. Esto se hace cambiando el primer 0 de la
izquierda por 1. Este cambio se conserva si el cuadrado de esta aproximación es menor que n,
en caso contrario, se mantiene el 0 y se repite el proceso con el siguiente 0. Este proceso
requiere O (log^3 n) operaciones, es decir,

Tiempo (calcular m =[raíz de n]) = O (log^3 n)

14
Ex31:

Como ejemplo del algoritmo usado en el problema anterior, determinar en binario el valor de
[raíz de 116].

Solución:

Para determinar m = [sqrt116] = [sqrt110100(2] procedemos del mismo modo que en el


problema anterior. Como 116 tiene 7 dígitos, la primera aproximación será m1 = 1000(2. La
segunda aproximación consiste en analizar el cuadrado de m2^2 = (1100(2)^2. Como

m2^2 = (1100(2)^2 = 10010000(2 > 1110100(2, este cambio no es adecuado.

Sea m3 = 1010(2. Como m3^3 = (1010(2 )^2 = 1100100(2 < 1110100(2, el cambio se
mantiene.

Sea por último m^4 = 1011(2. Como m4^2 = (1011(2)^2 = 1111001(2 > 1110100(2, el cambio
no es adecuado.

Por tanto, el valor buscado es m= 1010(2 = 10. Por otra parte, puede comprobarse fácilmente
que 11 = sqrt 121 > sqrt116 > =[ sqrt116] > sqrt100 = 10.

Ex32

Estimar el tiempo requerido para calcular en binario el valor de 3^n.

Solución :

Para calcular en binario 3^n hacen falta n - 1 multiplicaciones. En cada producto parcial 3^j
tiene O(n) bits y 3 tiene 2 bits, por lo que cada producto parcial necesita 0(n) 0(2) = 0(n)
operaciones. En total son necesarias 0( n^2) operaciones, es decir,

Tiempo (calcular en binario 3^n) = O( n^2)

EX33

Determinar el tiempo que hace falta para calcular n^n.

Solución:

Para calcular n^n hacen falta n - 1 multiplicaciones y cada una de ellas tiene 0(n *log n) dígitos;
por tanto, el tiempo requerido en cada producto parcial es O (log n) O (n * log n) = O (n * log 2
n). Luego, el tiempo total es 0(n2 * log2 n), es decir,

Tiempo (calcular n^n = O (n2 * log2 n)

Ex 34:

Calcular el tiempo necesario para multiplicar todos los números primos menores que un
número dado n, supuesto que se tiene la lista de todos esos primos. (Nota: para calcular el
número de primos menores que n se debe utilizar el teorema de los números primos.)

15
Solucion:

Por el Teorema de los números primos, sabemos que el número de primos menores que un
número dado n (denotado por 𝜋 es asintótico a n/log n, por lo que el número de primos es O
(n/log n). Una cota para el número de operaciones bits en una de las multiplicaciones es 0(n *
log n). Por tanto, el número de operaciones requerido es O (n/log n) O (n *log n) = 0(n^ 2), esto
es,

Tiempo (calcular producto de primos menores que n) = O (n^2)

EX35:

Sea n = p *q el producto de dos primos diferentes. Demostrar que puede calcular φ(n) a partir
de p y q en O (log n) operaciones bits, y que se pueden calcular p y q a partir de φ(n) en

O (log^3 n) operaciones bits.

Solución:

Sea n = p * q el producto de dos primos diferentes, y supongamos que se conocen p y q. Si n es


par, la solución es inmediata pues se tiene que p = 2, q = n/2 y φ(n) = n^2 - 1. Si n es impar,
φ(n) = φ (p* q) = φ (p) φ (q) = (p - 1) (q - 1) = n + 1 - (p + q), lo cual requiere sólo sumas y
restas, es decir, el tiempo es O (log ri). Si se conocen n y φ (n) y las incógnitas son p y q, resulta
que p *q = n y p + q = n+ 1- φ(n) , es decir, p y q son las raíces de la ecuación

de segundo grado x 2 - (n+ 1- φ(n) x + n = x ^2 - 2bx + n = 0, con lo que bastará con calcular el
valor de b ± sqrt(b^2 - n ). Ahora bien, el mayor tiempo necesario para calcular la expresión
anterior lo lleva determinar la raíz cuadrada,

pero esto se puede hacer en O (log^3 n).

Ex36

Comprobar que el tiempo necesario para calcular a^n(mod m) es O (log n * log^2 m).

Solución:

Utilizando el método de las potencias cuadradas sucesivas, se puede apreciar que para calcular
a^n (mod m), siendo n un entero k + 1 -bits, hay que hacer, en cada paso, una o dos
multiplicaciones de números menores que m2, y que hay que hacer k pasos. Por tanto, cada
paso lleva O (log^2 m^2) = O (log^2 m) operaciones bits. Así pues, el número de operaciones
es O (log n) O (log^2 m), es decir,

Tiempo (calcular a^n (mod m)) = O (log n * log^2 m)

Ex37

Sea Fq un cuerpo finito de q = p ^m elementos y sea F(X) un polinomio irreducible de grado m


sobre Fq . Probar que dos elementos de Fq pueden ser multiplicados en O (log^3 q)
operaciones bits.

Solución:

16
Un elemento de F puede verse como un polinomio con coeficientes en Fp = Z/pZ = Zp módulo
el polinomio F(X). Para multiplicar dos elementos de F se multiplican los polinomios —lo que
requiere O( m^ 2) multiplicaciones de enteros módulo p (y algunas sumas de enteros módulo p
, que necesitan menos tiempo)— y luego se toma el resto de la división entre F(X). La división
de polinomios lleva O(m) divisiones de enteros módulo p y O( m ^2) multiplicaciones de
enteros módulo p. Por tanto, el número de operaciones necesarias es O(m^ 2 * log^2 p + m
*log^3 p) = O((m * log p)^3) = O(log3 q) es decir,

Tiempo (multiplicar dos elementos de Fq ) = O (log^3 q)

EX38

Con las mismas condiciones del problema anterior, si k es un entero positivo, entonces un
elemento de Fq puede elevarse a la potencia k en O (log k * log^3 q) operaciones bits.

Solucion:

Una potencia k-ésima se puede calcular por el método de las potencias cuadradas sucesivas,
de forma análoga a la exponenciación modular. Este proceso requiere de O (log k)
multiplicaciones (o cuadrados) de elementos de Fq, y, por tanto, de O (log k * log^3 q)
operaciones bits, es decir,

Tiempo (elevar a k un elemento de Fq ) = O (log k * log3 q)

Ex 39

Justificar que el siguiente algoritmo para calcular el mcd (n1, n2) = d de dos números, debido a
Stein, es correcto:

Entrada: dos enteros positivos n1 y n2.

Salida: d = mcd(n1,n2).

17
Solución :

La justificación del algoritmo es como sigue:

a) Inicialización de una variable, c, que contendrá el número de factores 2 que tienen en


común n1 y n2.

b) Determinación del mayor exponente de 2 que es común a n1 y a n2, y almacenamiento de


este exponente en c. Por tanto, 2^c es un factor de la salida del algoritmo.

c) n, será par, si es que alguno de los factores aún lo es.

d) Si n1 es impar, se simplifica su valor de modo que pase a ser impar. El factor por el que se
divide n1 para ser impar no importa en la salida, dado que n2 es impar. Después de este paso,
los dos números son impares.

e) Cálculo del discriminante Δ= n1 - n2.

f) El discriminante es un valor positivo.

g) Como Δ es par por ser la diferencia de dos números impares, se simplifica por 2, y al nuevo
valor se le llama n1.

h) Si n1 diferente de 0, como n2 es impar, se vuelve al paso d) para repetir el proceso.^


i) Si n1 = 0, se tiene que n2 es el factor común y el algoritmo termina considerando que la
salida es el producto de ese factor por la potencia de 2 determinada en el paso b).

18
Ex40
Ejecutar el algoritmo anterior para determinar el mcd (24, 36).
Solución:

Realicemos paso a paso el algoritmo anterior:

1.2. Métodos matemáticos

Ex 41

Calcular el orden de la permutación:

Solución:

Para calcular el orden de una permutación 𝜋, el procedimiento que se sigue (especialmente


cuando dicho orden es elevado) es descomponer 𝜋 en ciclos con soportes disjuntos; esto es, 𝜋
= 𝜋1... o 𝜋 k, donde cada 𝜋i es un ciclo que deja invariantes los puntos que permutan los
demás ciclos 𝜋𝑗.

1->2->5->20->4->9->14->6->12->10->3->8->1 tenemos 12 ciclos

2->5->20->4->9->14->6->12->10->3->8->1->2 tenemos 12 ciclos

3->8->1->2->5->20->4->9->14->6->12->10->3 tenemos 12 ciclos

19
4->9->14->6->12->10->3->8->1->2->5->20->4 tenemos 12 ciclos

Análogamente con 5 y 6 nos da 12 ciclos

7->13->11->7 tenemos 3 ciclos

8->1->2->5->20->4->9->14->6->12->10->3->8 tenemos 12 ciclos

Calculando al ojo vemos que los únicos diferentes de 12 son :

15->19->17->15 tenemos 3 ciclos

16->18->16 tenemos 2 ciclos

Luego 𝜋 es el producto de cuatro ciclos disjuntos de órdenes 12, 3, 3, 2, respectivamente. Por


tanto, el orden de n es mcm (12, 3, 3, 2) = 12.

EX42

¿Cuántos divisores tiene 945? Listarlos.

Solución :

Descomponemos 945 en factores:

945= 3^3 * 5 * 7 =27 *5*7

D27 = {1,3,9,27} ->4 divisores

D5 = {1,5} ->2 divisores


D7 ={1,7} ->2 divisores

El número de divisores es 4 * 2 * 2 =16 y éstos son: 1, 3, 5, 7, 9, 15, 21, 27, 35, 45, 63, 105, 135,
189, 315, 945

Ex43

Calculando los restos potenciales de 10 módulo 7, deducir el criterio de divisibilidad por 7 para
un número de cinco cifras y para uno de siete cifras. Como aplicación, calcular los valores de c
y d para que el número N = 32cd1 sea divisible por 7. ¿Se podría deducir el criterio de
divisibilidad por 7 para un número con cualquier número de cifras?

Solución :

Los restos potenciales de 10 módulo 7 son:

20
10^0 = 1 (mod. 7), 10^1 = 3 (mod. 7), 10^2 = 2 (mod. 7),

10^3 = 6 (mod. 7), 10^4 = 4 (mod. 7), 10^5 = 5 (mod. 7),

10^6 = 1 (mod. 7), 10^7 = 3 (mod. 7), 10^8 = 2 (mod. 7).

Por tanto, un número de cinco cifras, M= abcde, es divisible por 7 si M= a*10^4 +


b*10^3+c*10^2+d*10^1+e*10^0= 0 (mod 7), es decir,

si M= a*4 + b*6 +c*2+d*3+e= 0 (mod 7).

De forma análoga, un número de siete cifras, M= abcdefg, es divisible por 7 si M=


a*10^6+b*10^5+c*10^4+d*10^3+e*10^2+f*10^1+g*10^0= 0 (mod 7) equivalente a
M=a+5b+4c+6d+2e+3f+g=0(mod7).

Según lo anterior, el número N = 32cd1 es divisible por 7 si se verifica que= 3*4 + 2*6
+c*2+d*3+1 =25 + 3d+2c = 0 (mod 7). Así pues, los números 32011 y 32501 son divisibles por
7.(estos nr viene por sustituir c y d con c= 0 o 5 y d=1 o 0)

Para obtener el criterio de divisibilidad por 7 para un número con cualquier número de cifras
basta observar que el resto de 10^6 (mod 7) es el mismo que el de 10^0 (mod 7), por lo que la
serie de los restos potenciales se repite.

Ex44:

Determinar la potencia de cada uno de los siguientes primos: 2, 3, 5 y 7 que dividen


exactamente a 100!.

Solución:

Tenemos que:

100! = 2^97 * 3^48 * 5^24 * 7^16 *11^99 *13^7 * 17^5 * 19^5 * 23^4 * 29^3 * 31^3 * 37^2 *

41^2* 43^2 * 47^2 * 53 * 59 * 61 * 67 * 71 * 73 *79 * 83 * 89 * 97.

Ex45:

Para cada uno de los siguientes pares de enteros, encontrar su máximo común divisor (mcd =
d) y expresar d como combinación lineal de dicha pareja:

a) 26, 19.

b) 187,34.

c) 841, 160.

d) 1547,560.

e) 1729, 1001.

f ) 2613,2171.

21
Solución:

Se tiene que:

a) mcd(26, 19)= 1 = -8 *26 + 11 *19.

b) mcd(187, 34)= 17= 1 • 187-5-34.

c) mcd (841, 160)= 1 = -39 * 841 +205 * 160.

d) mcd (1547, 560) = 7 = 21 *1547 - 58 *560.

e) mcd (1729, 1001) = 91 = -4 * 1729 + 7 * 1001.

f ) mcd (2613, 2171) = 13 = -54 * 2613 + 65 * 2171.

Ex46

Calcular el mínimo común múltiplo de a = 2345 y b = 737 usando la fórmula a * b = mcd (a, b)
*mcm(a,b).

Solución:

Como mcd (2345, 737) = 67, se tiene que mcm(a, b) = 2345* 737/67 = 25795.

Ex47

En ocasiones resulta conveniente llevar a cabo el algoritmo de Euclides utilizando también


restos por defecto, es decir, llevando a cabo las siguientes divisiones:

22
Solución:

Comparando los dos algoritmos se tiene que:

Primero:

2613 =2171 +442

2171 = 4*442 + 403

442 = 403 + 39

403 = 10* 39 + 13

39 = 3 * 13

Segundo:

2613 =2171 +442

2171 = 5 *4 4 2 -3 9

442 = 11 * 39+ 13

39 = 3 *13

Ex 48

Calcular los valores del mcd(/(x),g(x)) = d(x) para las siguientes parejas de polinomios, y en
cada uno de los casos determinar los polinomios u(x) y v(x) tales que d(x) = w(x)/(x) + v(x)g(x).

Solución:

Se tiene que:

23
Ex49

Solución:

Ex50

Solución:

24
Ex51:
Representar en sendas tablas las operaciones de suma y producto módulo 4.

Solución:

Ex52:

Calcular , el inverso de 160 módulo 841. Encontrar también el inverso de 15 módulo 127.

Solución :

160^(-1) (mod 841)

se tiene que 1 = 205 * 160 - 39 * 841, por lo que 1 = 205 * 160 (mod 841), es decir,

160^(-1) (mod 841)

. De forma análoga se tiene que 15^(-1) = 17 (mod 127).

Ex53:
Calcular el orden de 5 módulo 1367.

Solución:

Ex54
Determinar las unidades y decenas de 7^123

25
Solución:

EX55

Solución:

Ex56:

Solución:

26
Ex57 ecuaciones diofánticas

Solución:
Determinamos los inversos correspondientes :

a)Inverso de 3mod7=5

Después se calcula 5*4 mod7=20mod7=(20-7*2)mod7=4mod7

b)Inverso de 3 mod12=no hay inverso modular

c)Inverso de 9 mod 21=no hay inverso modular

pero se puede hacer de otra forma :

9x = 12mod 21 en Z21  21|9x-12 en Z


 ∃y ∈ Z : 9x-21y=12
 ∃y ∈ Z : 3x-7y=4 esta ecuación corresponde al subpunto a)
Entonces en d) tenemos los mismos resultados.

d)Inverso de 27 mod 256=19

después se calcula 19*25mod256=475mod256=219 mod256

e)Inverso de 27 mod 900=no hay inverso modular

pero se puede hacer de otra forma :

27x = 72mod 900 en Z900  900|27x-72 en Z

27
 ∃y ∈ Z : 27x-900y=72
 ∃y ∈ Z : 3x-100y=8
Utilizaremos el algoritmo de Euclides para obtener la solucion general de esta ecuacion
diofantica.

33 3
100 3 1 0

100=33*3 + 1, 1=100-33*3=100-33(

f)Inverso de 103 mod 676=571

después se calcula 571*612mod 676=349452mod676=636

Calculadora en línea: Inverso Multiplicativo Modular (planetcalc.com)

Calculadora de modulo (miniwebtool.com)

28
Ex58
Resolver el siguiente sistema de ecuaciones módulo 5:

3x + 2y = 2,

x + 3y = 1.

Solución:

Ejemplo de como se hacen estos sistemas hay 3 formas clásicas :

29
30
Ex59

Encontrar el número entero decimal de tres cifras que arroja un resto de 4 al ser dividido por
7, 9 y 11.

Solución:

4 verifica la condición pedida, salvo que no tiene tres cifras. Por otra parte,

como mcd (7, 9, 11) = 1 y 7 * 9 * 11= 693 tiene tres cifras, la solución es 4 + 693 = 697.

Ex60
Determinar el menor entero positivo que da un resto de 1 al dividirlo por 11, un resto de 2 al
dividirlo por 12 y un resto de 3 al dividirlo por 13.

Solución:

Se puede resolver el problema utilizando el Teorema del Resto Chino utilizando las ecuaciones:
x = 1 (mod 11), x = 2 (mod 12), x = 3 (mod 13). Sin embargo, se puede observar que -10 verifica
lo pedido, y como en el problema anterior, la solución es: -10 + 11 * 12 * 13 = 1706

Ex61

Solución:

31
Ex62

Solución:

Ex63

Solución:

32
Ex64

Calcular el par que corresponde al entero 135 en el isomorfismo Z143 ~ Z 11 x Z 13.


Recíprocamente, determinar el entero módulo 143 que corresponde al par (7,11).

Solución:

Ex65

Solución :

33
EX66

Solución :

Ex67

Solución:

34
Ex68

Solución:

35
1.1. Criptología clásica

Ex 69

Solución :

Julio Cesar

Augusto cesar

Cuando escribía un texto cifrado, sustituía la B por la A, la C por la B y el


resto de las letras de ese mismo modo, usando AA para la X.

36
Ex70:

Solución:

Se construye una tabla de 8 lineas y 3 columnas:

U A A
N
N M
A O O
G S
U C C
I A A
L Z S

Ex71:

Solución :

37
Se hace la tabla : pero creo que tenia que decir e líneas y 8 columnas para llegar al
resultado

M C A
I N D
R B O
I O A
E I A
E L T
A R L
M M R

M I A N I M O T
I E M B L A A L
R E C O R D A R

Ex72

Solución:

Ex73

Solución :

38
Ex74:

Solución:

39
Cifrado Vigenere

Si tiene la clave secreta, descifrar es tan fácil como cifrar. Puede trabajar hacia atrás
utilizando la tabula recta. En primer lugar, repita la clave secreta para que su longitud
coincida con el texto cifrado.

texto : DAIETVKEQ ML BRRLMGMNFE QXP FWNSRRLS B ML BRRLMGMNFE QXP VMNMDB

clave: DIAMANTED IA MANTEDIAMA NTE DIAMANTE D IA MANTEDIAMA NTE DIAMAN

texto para descifrar:

DAIETVKEQ ML BRRLMGMNFE QXP FWNSRRLS B ML BRRLMGMNFE QXP VMNMDB

Usando la tabula recta, encuentre la fila que corresponde a la primera letra en su texto
clave secreta- en nuestro caso, D. En la fila D, busque la letra de texto cifrado
correspondiente D. La columna vertical donde se encuentra esa letra de texto cifrado
revela la letra de texto sin formato A.

40
La segunda letra de la clave DIAMANTE es la I .En la fila I ,buscamos la letra de texto
cifrado correspondiente A. La columna vertical donde se encuentra esa letra de texto
cifrado revela la letra de texto sin formato S.
Y asi sucesivamente hasta que sacamos el descifrado:

ASISTIRAN EL PRESIDENTE DEL CONGRESO Y EL PRESIDENTE DEL SENADO

Ex75

Solución :

Se saca la clave por el año cuando descubrió America Colon.: 1492 =BEJC

41
A continuación se hace VIGENERE sobre el texto con la clave BEJC.

Ex76:

Solución:

b)

42
c)

43
LAS PROBLEMAS QUE REPITEN EN EL EXAMEN

ALGORITMO RSA

P1

Solución:

Alfabeto de 27 letras con {A=0, …, Z=26}

Clave pública Ali (n1, e1) = (33, 3) Clave privada d=7 p=3, q=11

Clave pública Bob (n2, e2) = (77, 13)

Primero calculamos la FIRMA

La firma digital del criptosistema RSA debe realizarse antes de codificar, es decir sobre el texto
plano.

Calculamos la longitud del mensaje sabiendo que no puede exceder de n2 = 77

27^2<n2<27, -> 729<77<27 -> Vamos ha tener como máximo una letra y tenemos que dividir

El mensaje

Se coje primero la letra N

m1=N=13*27^0 =13 (nota: 13 corresponde a N en la tabla alfabetica)

r1=m1^d1 mod n1 = 13^7 mod 33 = 7 mod 33

s1=r1^ e2 mod n2 = 7^13 mod 77= 35 mod 77

La firma digital correspondiente a “N” es s1= 35 mod 77 = 35= 1*27 ^0+ 8*27^1 = BI

Se coje la letra “I”

m2 = I = 8*27^0 = 8

r2 = m2^ d1 mod n1 = 8^ 7 mod 33 = 2 mod 33

s2= r2 ^e2 mod n2 = 2^ 13mod 77 = 30 mod 77

44
La firma digital correspondiente a “I” es s2= 30 mod 77 = 30 = 1*27 + 3 = BD

Se coje la letra “Ñ”

m3 = Ñ = 14*27^0 = 14

r3 = m3^ d1 mod n1 = 14^7 mod 33 = 20 mod 33

s3= r3^ e2 mod n2 = 20 ^13mod 77 = 69 mod 77

La firma digital correspondiente a “Ñ” es s3= 69 mod 77 = 69 = 2*27 + 15 = CO

Se coje la letra “O”

m4 = O = 15*27^0 = 15

r4 = m4^ d1 mod n1 = 15^7 mod 33 = 27 mod 33

s4= r4^ e2 mod n2 = 27 ^13mod 77 = 48 mod 77

La firma digital correspondiente a “O” es s4= 48 mod 77 = 48 = 1*27 + 21 = BU

La firma del mensaje “NIÑO” es s = BIBDCOBU

Hemos aplicado el ALGORITMO DE EXPONENCIACION RAPIDA

RESOLVEMOS : 27^13 mod77

Pasamos el exponente 13 al binario

13(10= 1101(2->b3b2b1b0 A^B mod n =27 mod 77

X=1

b3=1 , x= 1^2 *27 mod77= 27

b2=1, x= 27^2* 27 mod77=48

b1=0,x=48^2 mod77=71

b0=1, x=71^2* 27mod77 =48

en conclusión 27^13 mod77 = 48

45
Nota importante para sacar bien este algoritmo:

Cuando el bit =1 el x= x^2 *A mod n

Cuando el bit = 0 el x = x^2 mod n

P2

Solución:

a)

p=23, q=17 ,observamos que p y q son primos y coprimos entre si -> n=p*q=391

Primero calculo el orden del grupo:

φn=(p-1)(q-1)=22*16=352

Comprobamos que “e” sea coprimo con el orden del grupo:

mcd (e, φn)=1 -> mcd (3,352)=1

352=117*3 + 1

3=1*3 + 0

Para obtener d calculo el inverso de e en φn

d= inv (e, φn) = inv (3, 352)

46
Utilizo el Algoritmo Extendido de Euclídes:

352 = 117*3 + 1 -> 1 = 1*352 – 117*3

Pasamos a mod 352 y tenemos 1 = 0 +235*3 -> 3 ^(-1) = 235

Resulta que d=235

b) Para recuperar el mensaje original hay que calcular:

Aplicamos el algoritmo de exponenciación rápida:

m = 165^235 mod 391=210

pero vamos a ver como llegamos a 210

primero pasamos el exponente 235 a binario->235(10= 11101011(2

x=1 , b7b6b5b4b3b2b1b0 A*modn= 165 mod 391

b7=1 , x = 1^2 *165 mod 391= 165

b6=1, x =165^2*165 mod391=317

b5=1, x =(317^2)* 165 mod391=330

b4=0,x=330^2mod391=202

b3=1,x=202^2*165 mod 391=31

b2=0,x=31^2mod391=179

b1=1,x=179^2*165 mod 391=54

b0=1,x=54^2*165 mod 391=210 CORRECTO

El mensaje enviado es m=210

47
Si lo codificamos en el alfabeto español de 27 letras con {A=0, …, Z=26} quedaría de la siguiente
forma:

m = 210 = 7*27^1 + 21*27^0 = HU (aquí dividimos 210 entre 27)

P3

Solución:

Clave pública Alicia (n1, e1) = (34121, 15775); Clave privada Alicia d1=26623

Clave pública Bob (n2, e2) = (46927, 39423)

Alfabeto de 27 letras con {A=0, …, Z=26}

Comprobamos la longitud del mensaje

27^4 > n2 > 27^3-> 531441 > 46927 > 19683

Ha de tener como máximo 3 letras

Codifico “EÑE”

EÑE = E*27^2+Ñ*27^1+E*27^0 = 4*27^2+14*27^1+4 = 3298

m = 3298

encriptamos m

Pasamos el exponente a binario: 39423(10= 1001100111111111(2

X=1 , b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 Amodn =3298 mod 46927

.b15=1 ,x= 1^2*3298 mod 46927=3298

.b14=0, x= 3298^2 mod 46927=36667

48
.b13=0 ,x=36667^2 mod46927=10339

.b12=1 ,x=10339^2 *3298 mod 46927=33469

.b11=1,x=33469^2*3298 mod 46927=17138

.b10=0,x=17138^2 mod 46927=41878

.b9=0 ,x=41878^2 mod 46927=11040

.b8=1 , x=11040^2*3298 mod 46927=3426

.b7=1,x=3426^2*3298 mod 46927=19694

.b6=1,x=19694^2*3298 mod 46927=10485

.b5=1,x=10485^2*3298 mod 46927=17044 los calculamos directamente con la calc científica

.b4=1,x=17044^2*3298 mod 46927=44731

.b3=1,x=44731^2*3298 mod 46927=16836

.b2=1,x=16836^2*3298 mod 46927=19758

.b1=1,x=19758^2*3298 mod 46927=26879

.b0=1,x=26879^2*3298 mod 46927=16350

C = 16350 mod 46927

Decodificamos C

27^3 > C > 27^2 ->19683 > 16350 > 729 -> Ha de tener 4 letras porque se compara siempre con
n y en en este caso tiene 5 cifras

C = 0*27^3+22*272+11*27+15 = AVLO

El criptograma enviado es AVLO

49
P4

FIRMA DIGITAL CON HASH

Solución:

Alfabeto español de 27 letras con {A=0, …, Z=26}

Clave Pública Alberto (n1, e1) = (34121, 15775) Clave Privada Alberto d=26623 p= 229, q=149

Clave Pública Bárbara (n2, e2) = (46927, 39423)

a)

Aplicamos el algoritmo de exponenciación rápida:

Calculándolo directamente C1 = 15664^39423 mod 46927=20785

Pero vamos a calcularlo nosotros.

50
Pasamos el exponente 39423 a binario: 39423(10= 1001100111111111(2

Tenemos los bits : b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 Amodn=15664 mod46927

X=1

.b15=1, x=1^2 *15664 mod46927=15664

.b14=0, x=15664^2 mod46927=26540

.b13=0,x=26540^2 mod46927=44257

.b12=1,x=44257^2*15664 mod46927=22743

.b11=1,x=22743^2*15664 mod46927=35963

.b10=0,x=35963^2 mod46927=29249

.b9=0,x=29249^2 mod46927=24791

.b8=1,x=24791^2*15664 mod46927=18836

.b7=1,x=18836^2*15664 mod46927=32665

.b6=1,x=32665^2*15664 mod46927=45269

.b5=1,x=45269^2*15664 mod46927=26166

.b4=1,x=26166^2*15664 mod46927=8702

.b3=1,x=8702^2*15664 mod46927=11028

.b2=1,x=11028^2*15664 mod46927=32343

.b1=1,x=32343^2*15664 mod46927=39935

.b0=1,x=39935^2*15664 mod46927=20785

C1 = 20785 mod 46927 = 20785 = 1*27^3 + 1*27^2 + 13*27^1 + 22*27^0 = BBNV

51
Aplicamos otra vez el Algoritmo de exponenciación rápida:

Pasamos el exponente 39423 a binario: 39423(10= 1001100111111111(2

Tenemos los bits : b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 A modn=3 mod46927

X=1

.b15=1, x=1^2 *3 mod46927=3

.b14=0, x=3^2 mod46927=9

.b13=0,x=9^2 mod46927=81

.b12=1,x=81^2*3 mod46927=19683

.b11=1,x=19683^2*3 mod46927=20458

.b10=0,x=20458^2 mod46927=34778

.b9=0,x=34778^2 mod46927=12786

.b8=1,x=12786^2*3 mod46927=11311

.b7=1,x=11311^2* 3mod46927=230

.b6=1,x=230^2*3mod46927=17919

.b5=1,x=17919^2*3mod46927=1154

.b4=1,x=1154^2*3 mod46927=6353

.b3=1,x=6353^2*3 mod46927=10167

.b2=1,x=10167^2*3 mod46927=10051

.b1=1,x=10051^2*3 mod46927=13237

52
.b0=1,x=13237^2*3mod46927=25180

C2 = 25180 mod 46927 = 25180 = 1*27^3 + 7*27^2 + 14*27^1 + 16*27^0 = BHÑP

- El criptograma a enviar es BBNVBHÑP

b) ¿CUÁL SERÍA EL HASH?

La función HASH se utiliza sobre el mensaje sin cifrar

En este caso la función resumen H(m) es la suma de los símbolos que componen el mensaje en

Modulo 27

H(UNED) = (21+13+4+3) mod 27 = 41 mod 27 = 14 mod 27 (nota:las cifras 21,13,4 y 3 son los
correspondientes de las letras U,N,E,D)

=>H(m) = 14

c) ¿CUÁL SERÍA LA FIRMA DIGITAL?

Aplicamos otra vez el Algoritmo de exponenciación rápida:

Pasamos el exponente 26623 a binario: 26623(10= 110011111111111(2

X=1 , b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 Amod n=14 mod 34121

.b14=1, x=1^2 *14mod 34121=14

.b13=1,x=14^2 *14mod 34121=2744

.b12=0,x=2744^2 mod 34121 =22916

.b11=0,x=22916^2 mod 34121 =20866

53
.b10=1,x=20866^2*14mod 34121 =15702

.b9=1,x=15702^2*14mod 34121 =24775

.b8=1,x=24775^2*14mod 34121 =5505

.b7=1,x=5505^2*14mod 34121=9836

.b6=1,x=9836^2*14mod 34121=23449

.b5=1,x=23449^2*14mod 34121=7846

.b4=1,x=7846^2*14mod 34121 =7806

.b3=1,x=7806^2*14mod 34121 =11783

.b2=1,x=11783^2*14mod 34121 =10360

.b1=1,x=10360^2*14mod 34121 =27923

.b0=1,x=27923^2*14mod 34121=31775

La rúbrica es r = 31775 mod 34121

Aplicamos otra vez el Algoritmo de exponenciación rápida:

Pasamos el exponente 39423 a binario: 39423(10= 1001100111111111(2

Tenemos los bits : b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 Amodn=31775 mod46927

X=1

.b15=1, x=1^2 *31775 mod46927=31775

.b14=0, x=31775^2 mod46927=16220

.b13=0,x=16220^2 mod46927=15638

54
.b12=1,x=15638^2*31775 mod46927=38754

.b11=1,x=38754^2*31775 mod46927=19697

.b10=0,x=19697^2 mod46927=26300

.b9=0,x=26300^2 mod46927=32947

.b8=1,x=32947^2*31775 mod46927=2144

.b7=1,x=2144^2* 31775mod46927=13433

.b6=1,x=13433^2*31775mod46927=4168

.b5=1,x=4168^2*31775mod46927=22746

.b4=1,x=22746^2*31775 mod46927=2421

.b3=1,x=2421^2*31775 mod46927=11576

.b2=1,x=11576^2*31775 mod46927=21028

.b1=1,x=21028^2*31775 mod46927=45226

.b0=1,x=45226^2*31775 mod46927=33893

La firma digital es s = 33893 mod 46927

(criptograma, firma) = (BBNVBHÑP, BSNI)

55
PROBLEMAS CON ELGAMAL

P1

Solución:

^v =7^480 mod 15485863

Aplicamos otra vez el Algoritmo de exponenciación rápida:

Pasamos el exponente 480 a binario: 480(10=111100000(2

56
X=1 ,b8b7b6b5b4b3b2b1 A mod n = 7 mod 15485863

.b8=1,x=1^2*7 mod 15485863=7

.b7=1,x=7^2 *7 mod 15485863=343

.b6=1,x=343^2*7 mod 15485863=823543

.b5=1,x=823543^2*7 mod 15485863=14032444

.b4=0,x=14032444^2 mod 15485863 =217731

.b3=0, x=217731^2 mod 15485863 =4561718

.b2=0, x=4561718^2 mod 15485863=3332507

.b1=0,x=3332507^2 mod 15485863=9169777

.b0=0 ,x=9169777^2 mod 15485863=12001315

Tenemos ^v =7^480 mod 15485863 = 12001315 mod 15485863

Decodificamos :

12001315 = 22*27^4 + 15*27^3 + 19*27^2 + 19*27^1+ 4*27^0 = VOSSE

Alberto calcula (α^ b )^ v y m*(α ^b )^ v

α ^ b = 7^ 28236 = 12506884 mod 15485863

(α^ b )^ v = 12506884^480 = 6193972 mod 15485863 //SE CALCULA CON ALG DE


EXPONENCIACION RAPIDA SOLO HICE EL α ^ b AL FINAL DE ESTE EJERCICIO

m*(α^ b )^ v = 422931 * 6193972 mod 15485863=3215126

Decodificamos :

3215126=6*27^4 + 1*27^3 + 9*27^2 + 8*27^1 + 20*27^0=GBJIT

El criptograma enviado a Bárbara es (VOSSE, GBJIT )

57
Añadimos los cálculos utilizando el algoritmo de exponenciación rápida:

. α^ b = 7^28236 mod 15485863=12506884 y m*( α^ b)^v= 3215126 mod 15485863

Pasamos el exponente 28236 a binario: 28236(10 = 110111001001100 (2

X=1 ,b11b10b9b8b7b6b5b4b3b2b1b0 A mod n =7 mod 15485863

28236(10 = 110111001001100 (2

.b14=1, x=1^2*7 mod 15485863=7

.b13=1 , x=7^2*7 mod 15485863=343

.b12=0, 343^2 mod 15485863=117649

.b11=1, 117649^2*7 mod 15485863=9451479

.b10=1, 9451479^2*7 mod 15485863=1129342

.b9=1, 1129342^2*7 mod 15485863=14705714

.b8=0, 14705714^2 mod 15485863=7074575

.b7=0 7074575^2 mod 15485863=14564323

.b6=1 14564323^2 *7 mod 15485863=656212

.b5= 0 656212^2 mod 15485863=14282366

.b4=0 14282366^2 mod 15485863=12262619

.b3=1 12262619^2 *7 mod 15485863=731714

.b2=1 731714^2 *7 mod 15485863=11024764

58
.b1=0 11024764^2 mod 15485863=10713022

.b0=0 10713022^2 mod 15485863=12506884

b) Calcular la firma digital

La firma digital del criptosistema de ElGamal la realizamos sobre el mensaje m sin cifrar.

Como ya indiqué en el apartado anterior m= 422931 - Alberto genera un número aleatorio h


tal que mcd (h, p-1) = 1

Tomamos h=90725 y que es coprimo con 15485863-1 mcd(90725, 15485862) = 1

La firma para el mensaje es la pareja (r, s) por lo tanto la firma de Alberto es:

(r, s) = (7635256, 9619815)

EJERCICIOS DE LOS EXAMENES ANTERIORES

59
Ex1
Un texto cifrado ha sido generado con un cifrado afín. La letra más
frecuente del cibertexto es la 'B' y la segunda letra más frecuente es la 'U'.
Al romper este código, el valor debes:
a) 7
b) 15
e) 13
d) Ninguna de las anteriores
Solución:
En el alfabeto ingles sin Ñ , B=1 y U=20
Sabemos que C=a *m +b mod n; donde n=26 ; a,b<n
mcd(a,n)=1 -> a=1,3,5,7,11,13,17,19,23
según la teoría sabemos que :
letra con mas frecuente= E(4)
letra segundo mas frecuente=T(19)
Entonces:
1=a*4 + b mod 26
20= a*19 + b mod 26
De las dos relaciones resulta que :
La única posibilidad que puede cumplir es a= 3 y b=15
Lo adivinamos dando valores a “a=1,3,5,7,11,13,17,19,23”
Y comprobando las 2 relaciones.

Ex2
El inverso de 4 en Z8 es:
a) 1
60
b) 2
e) 4
d) Ninguna de los anteriores

solución:
como [8] no es numero primo no todos los elementos de Z8
tienen inverso.
Mcd(4,8)=4 entonces [4] no tiene inverso en Z8.

Ex3
Se dispone del texto JMVWD UW cifrado con clave CIELO y el método de
Vigénere. El texto descifrado es:
a) GARBOSO
b) HERMOSO
e) CLARISA
d) Ninguna de los anteriores

solución:
hay mas arriba un ejercicio donde se explica según la tabla como
se hace

EX4
La expresión (125 x 45)mod 10 es igual a:
a) 3 mod 10
b) 30 mod 10
c) 1 mod 10
d) Ninguna de las anteriores

61
solución:
primero se multiplica 125*45=5625
después se divide por 10 y el resto es 5
entonces (125 x45) mod 10 = 5 mod 10

EX5
La expresión (5^15mod 13) se reduce a: (Ayuda: Pequeño teorema de
Fermat)
a) (8 mod 13)
b) (5 mod 13)
c) (11 mod 13)
d) Ninguna de las anteriores

Solucion:
m

EX6

Solución:
17 es un nr. primo ->aplicamos Fermat
.a^(p-1)=1 mod p
15 ^(17-1)=1 mod 17
15^16=1 mod 17

62
Pero : 15 ^18 mod 17 = 15^(16+2) mod 17 = (15^16)*15^2 mod
17 =15^2 mod 17 = 225 mod 17 =4 mod 17

Ex 7

Solución:

como [77] no es numero primo no todos los elementos de Z77 tienen


inverso.
Como mcd(12,77) = 1 ,entonces [12] tiene inverso en Z77

x es el inverso de 12 en Z77
entonces (12*x) mod 77 =1 mod 77
observamos que x=45 cumple , ademas es el inverso de 12 en z77.

Ex8

63
Solución :

como [323] no es numero primo(es divisible por 17) no todos los


elementos de Z323 tienen inverso.
Como mcd(16,323) = 1 ,entonces [16] tiene inverso en Z323

x es el inverso de 16 en Z323
entonces (16*x) mod 323 =1 mod 323
observamos que x=101 cumple , ademas es el inverso de 16 en z323.

EX9

Solución:
como [56] no es numero primo no todos los elementos de Z56 tienen
inverso.
Como mcd(27,56) = 1 ,entonces [27] tiene inverso en Z56

x es el inverso de 27 en Z56
entonces (27*x) mod 56 =1 mod 56
observamos que x=27 cumple , ademas es el inverso de 27 en z56.
64
EX10

Solución:

H(S)=0,5* log(2 (0,5^-1) +0,25* log(2 (0,25^-1)+ 0,25* log(2 (0,25^-1)=1,5

Ex11

Solución:

Clave publica =(e,n)


.n= p * q=59*61=3599

Clave privada = inversa de “e” en Z φ(n)


φ(n) = (p-1)*(q-1)=58*60=3480

Z
calculamos inverso de 31 en 3480

65
Este inverso nos da 3130.

Si tenemos que explicar como se hace :

Aplicamos algoritmo de Euclides

3480=31*112 + 8 ->8= 3480 – 31*112

31= 8*3 +7 -> 7= 31-8*3

8=7*1 + 1 -> 1= 8- 7*1

1=8-7*1 -> 1 = (3480 – 31*112) – (31-8*3)*1 = 3480 – 31*112 – 31*1 + 8*3 =

=3480 -31*113 + 8*3=3480 – 31*113 + (3480-31*112)*3=3480-31*113+3480*3-31*336=

=3480*4-31*449

1=3480*4 – 31* 449 <-> 1= -31*449 -> 31^(-1)= -449

➔ 31^(-1) = -449 + 3480 = 3031.

Ex12

Solución :

66
En nuestro caso:
Tenemos 3 valores -> m=3
R = log(2 (3)= 1,584
La entropía:
H(S)=0,5* log(2 (0,5^-1) +0,25* log(2 (0,25^-1)+ 0,25* log(2 (0,25^-1)=1,5
.r= la entropía=1,5
D=R-r= 1,584-1,5~ 0,0850

67
EX13:

Solución:

Hacemos la división :
5 =(-3)*(-1) +2
Puede ser 2 o -3+2 =-1

Nos quedamos con -1 porque pertenece a la Z(-3) o “ -1 esta entre -2…0”

EX14

Solución:
Hacemos la división :
-5 =(-3)*(1) + (-2)

Es - 2 porque pertenece a la Z(-3) “ -2 esta entre -2…0”

68
Ex15

Solución :
La primera es COMPUTADOR porque es la mas larga
La segunda es MAMA porque se repite MA

EX16

Solución:

69
Ex17

Indicar cómo debe ser el proceso de firma con el algoritmo RSA

Solución:
Con el algoritmo RSA nunca se debe firmar un mensaje despues de
codificarlo, por el contrario, debe firmarse primero. Existen ataques que
permiten manipular con exito mensajes primero codificados y luego
firmados, aunque se empleen funciones resumen.

Ex18

70
Solución:

EX19(mirar arriba)

71
Solución del libro:

EX20

Solución:

En el caso de ECB si el ultimo bloque es de 64 bits , hay que


añadir un nuevo bloque de 8 bytes donde los 7 primeros bloques
tienen o´s y el ultimo un 8.

72
Ex21

Solución:
Caras= columnas
Longitud del texto =48
Filas= 48/7 =7
ENUNLUG

ARDELAM

ANCHADE

CUYONOM

BRENOQU

IEROACO

RDARME

Nos sale:->EAACBIRNRNURED….GMEMUO

EX22

73
Solución:
Criptografía simétrica =misma clave para codificacar y para
decodificar

74
EX23

Solución:
Uno de los aspectos más singulares de PGP es su gestión de claves. Aquí no existen
autoridades de certificación, sino un «entorno de confianza»: cada usuario genera y distribuye
su propia clave, y son los mismos usuarios quienes firman las claves públicas de los demás.
PGP no especifica una política para establecer la confianza, sino que cada usuario es libre para
elegir en quién confiar y en quién no hacerlo.

75
EX25:

Solución:

1. ARQUITECTURA DEL CIFRADO EN BLOQUE


Todos los cifrados en bloque se componen de cuatro elementos:
1. Transformación inicial.
2. Una función criptográficamente débil iterada r veces o «vueltas».
3. Transformación final.
4. Algoritmo de expansión de clave.

La transformación inicial puede tener una o dos funciones: la primera consiste en


aleatorizar simplemente los datos de entrada (para ocultar bloques de datos de todo
ceros o unos, etc.), careciendo de significación criptográfica si no depende de la clave,
como sucede en el DES. La segunda función, solamente presente en algunos
criptosistemas, como el RC5 e IDEA, tiene significación criptográfica, dificultando
ataques por análisis lineal o diferencial; en este caso es función de la clave. Las vueltas
intermedias consisten en una función no lineal complicada de los datos y la clave, que
puede ser unidireccional (DES) o no (IDEA, RC5). La función no lineal puede estar
formada por una sola operación muy compleja o por la sucesión de varias
transformaciones simples. Las vueltas intermedias se enlazan por sumas módulo 2 bit
a bit con los datos que vienen de la transformación inicial o de las vueltas precedentes;
de esta manera se posibilita que se produzca una «involución» cuando se repite el
proceso de forma idéntica (pero eligiendo las claves de descriptación en orden
inverso), obteniéndose de esta forma los datos de partida. Las vueltas intermedias no
han de formar grupo, para que el conjunto de varias pasadas sucesivas con sus
subclaves correspondientes no sean equivalentes a una pasada única con una subclave
diferente, lo que sería un desastre. La transformación final sirve para que las
operaciones de encriptación y desencriptación sean simétricas.

76
EX26:

Solución:
CIFRADOS DE FEISTEL

Se denominan así los criptosistemas en los que el bloque de datos se divide en dos mitades y
en cada vuelta de encriptación se trabaja, alternativamente, con una de las mitades.
Pertenecen a este tipo los criptosistemas LUCIFER [25], DES [19], LOKI [6] y FEAL [24].

EX27

Solución:

El cifrado de Vigenére es polialfabetico.

EX28

77
Solución:

EX30

78
Solución:

EX31

Solución:

79
80

También podría gustarte