Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Universidad Industrial de Santander
Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones
Conceptos previos requeridos:
Números coprimos : Dos números enteros A y B son coprimos si no ꬅenen ningún factor primo en común excepto el 1. Dos
coprimos no ꬅenen porque ser primos absolutos de forma individual. Ejemplo: 8 y 15.
Operación módulo : La operación R = A(mod B) se define como el residuo R que resulta al dividir A entre B. Dicho de otra
forma, existe un entero X tal que A = B ∙X + R . Los números A , B , R y X son números naturales y
R < B . Ejemplo: 1 = 25(mod 6) porque al dividir 25 entre 6 el residuo es 1, o dicho de otra forma
25 = 6∙4 + 1 .
Exponenciación modular binaria: R = w y (mod B) . El algoritmo mostrado con el pseudocódigo del cuadro 1 permite
reducir el número de mulꬅplicaciones y maneja números de menor orden comparado
con el método intuiꬅvo de calcular primero w y y luego realizar la operación módulo.
En la tabla 1 se muestra una prueba de escritorio donde se desarrolla el algoritmo para
calcular R = w y (mod B) p ara w = 19, y = 27, B = 55 .
EXP_MOD(int w,
int
y, int
B)
R
=
1 Iteración R w y
while
( y >
0 ) do
if
( y
es
impar ) then ‐ 1 19 27
R = R *
w (mod
B) 1 1*19 (
mod
5
5)
=
1
9
(
mod
5
5)=
1
9 19*19 (mod 55) = 361 (mod 55)= 31 ⌊27/2⌋= 13
end
if 2 19*31 (mod 55)=589 (mod 55)= 3 9 31*31 (mod 55) = 961 (mod 55)= 26 ⌊13/2⌋ = 6
w
= w*w (mod
B) 3 39 26*26 (mod 55) = 676 (mod 55)= 16 ⌊6/2⌋ = 3
y
= parte_entera(y/2) 4 39*16 (mod 55)=624 (mod 55)= 1 9 16*16 (mod 55) = 256 (mod 55)= 36 ⌊3/2⌋ = 1
endwhile 5 19*36 (mod 55)=684 (mod 55)= 2 4 36*36 (mod 55)=1296 (mod 55)= 31 ⌊1/2⌋ = 0
return
(R)
Cuadro 1. Tabla 1.
Algoritmo RSA
Los algoritmos criptográficos de clave pública basan su seguridad en la complejidad que representa llevar a cabo algunos
procesos o algoritmos matemáꬅcos. RSA es un sistema de criptogra埪�a pública ampliamente usado en la actualidad y basa su
seguridad en la dificultad que existe en la factorización de un número entero n = p×q resultado de la mulꬅplicación de dos
números primos grandes. Actualmente la clave de RSA, es decir n , alcanza los 4096 bits.
En el siguiente ejemplo se explican los métodos de codificación y decodificación de mensajes, así como un método de
ataque criptográfico.
Bob desea enviar a Alice el mensaje “24” . Para tratar de evitar que Eve la hacker descifre la información, Bob emplea el
algoritmo RSA para encriptar su mensaje.
Generación de claves (Tarea realizada por A
lice ) Ejemplo
Elige de forma arbitraria dos primos p
y q
. p = 5 , q = 11
Calcula n = p×q n = p×q = 5×11 = 55
Calcula φ(n) = (p − 1)(q − 1) φ(n) = (p − 1)(q − 1) = (5 − 1)(11 − 1) = 40
Elige un número e coprimo con φ(n) , tal que 1 < e < φ(n) e = 3 (3 y 40 no ꬅenen divisores comunes)
Determina d tal que 1 = (d × e)(mod φ(n)) d = 27 dado que 1 = (27×3)(mod 40) = 81(mod 40)
Al finalizar esta etapa, Alice mantiene en secreto d , p y q y hace públicos los datos n y e para que Bob pueda codificar
Universidad Industrial de Santander
Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones
Codificación del mensaje (Tarea realizada por B
ob ) Ejemplo
Siendo m el mensaje que se desea enviar, se calcula el mensaje m = 24, e = 3, n = 55
codificado c así: c = me (mod n) c = 243 (mod 55) = 13824(mod 55) = 19
Al finalizar esta etapa, Bob envía su mensaje codificado c a Alice.
Decodificación del mensaje (Tarea realizada por A
lice ) Ejemplo
Se calcula m a parꬅr de c con ayuda de la clave privada d c = 19, d = 27, n = 55
mediante: m = c d (mod n) m = 1927 (mod 55) = 3, 36×1034 (mod 55) = 24
Al finalizar esta etapa, Alice ha recuperado el mensaje m que originalmente codificó Bob
Eve ꬅene acceso al canal de comunicación, por lo cual conoce la clave pública de Alice ( n y e ); así como también conoce el
mensaje codificado ( c ) enviado por Bob. Su objeꬅvo es encontrar el mensaje sin codificar ( m ).
Ataque Criptográfico (Tarea realizada por E ve ) Ejemplo
Factoriza n , encontrando p y q Factoriza 55 y obꬅene que p = 5 y q = 11
Con p y q , calcula φ(n) = (p − 1)(q − 1) φ(n) = (p − 1)(q − 1) = (5 − 1)(11 − 1) = 40
Calcula d sabiendo que 1 = (d × e)(mod φ(n)) d = 27 dado que 1 = (27×3)(mod 40) = 81(mod 40)
Decodifica c calculando m = c d (mod n) m = 1927 (mod 55) = 3, 36×1034 (mod 55) = 24
Al finalizar esta etapa, Eve ha descifrado el mensaje que Bob envió a Alice
Sobre el Procesador de propósito específico que usted debe diseñar
Hacer un PPE que permita decodificar un mensaje conociendo únicamente la clave pública y el mensaje codificado (estos
datos serán suministrados por el profesor). Dicho PPE podrá hacer uso de (o controlar a) otros procesadores que cumplan
las siguientes funciones:
● Factorizar un término en dos números enteros.
● Realizar la operación módulo
● Realizar la exponenciación modular binaria
Presentar los siguientes elementos sobre el diseño de cada procesador:
● Datapath.
● Tabla RTL.
● FSM de la unidad de control.
● Opcional: Segmentación d
atapath.
Este diseño tendrá un n de 64 bits, un número que con la tecnología de 1974 fue factorizado en 5.5 segundos y que con la
tecnología actual tardaría menos de un milisegundo. Tenga en cuenta que n es resultado de mulꬅplicar los números primos
p y q . Por lo tanto, p y q deben ser números tales que al sumar la canꬅdad de bits que posee cada uno de ellos, se
obtenga 64, por ejemplo, p y q pueden ser de 4 bits y 60 bits o 24 bits y 40 bits, etc. Todos los datos son enteros sin signo.
Universidad Industrial de Santander
Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones
Normas para el diseño de datapath
El datapath debe, a simple vista, reflejar la idea con la que se soluciona el problema.
Se solicita seguir las siguientes reglas con el objetivo de reglamentar el diagrama y facilitar su revisión:
● Registros: Como mínimo debe tener el dato de entrada y el dato de salida. Adicionalmente, puede tener reset
síncrono o asíncrono (se debe especificar cuál usa) y enable . De no indicarse algo diferente se asumirá que es
de tipo paraleloparalelo. Cualquier modificación que se desee hacer al funcionamiento natural del registro debe
ser indicada claramente mediante otro datapath.
● Unidades funcionales: El número de salidas y entradas debe ser coherente con la operación que realiza. Esta
operación debe ser indicada en el diagrama o anexar una tabla funcionamiento. Se asumirá que son de tipo
combinacional a menos que se especifique lo contrario.
● Multiplexores y demultiplexores: Se debe indicar la cantidad de bits de la señal de selección y la cantidad de
bits de las señales de entrada y salida. Su símbolo debe diferenciarse de una unidad funcional o indicarse
específicamente que el bloque es un mux o demux.
● Señales y Buses: Las señales que son entrada a cada uno de los bloques deben indicarlo mediante una
flecha. Las señales que quedan como salida o entrada del datapath deben tener un nombre único dentro del
diseño. La señal de reloj del diseño no es necesario dibujarla pero si se debe indicar a cuales bloques llega. Los
buses deben especificar el número de bits que lo componen. Al existir una bifurcación se debe especificar
cuáles y cuántos bits se han derivado del bus principal.
● Cajas Negras: Es posible utilizar módulos personalizados. Estos deben ser descritos mediante otro datapath.
Normas para el diseño de la tabla de instrucciones RTL
Las instrucciones RTL definen la transferencia de información en el datapath y la manipulación de sus entradas de
control. La tabla de instrucciones RTL NO es una depuración ciclo a ciclo del diseño, por el contrario, resume los
tipos de instrucciones(movimientos de datos) ejecutadas en el d
atapath .
Ésta debe contener una descripción (como pseudocódigo o similar) y las entradas de control del datapath .
Normas para el diseño de la unidad de control
La unidad de control está basada en una FSM.
● Para cada uno de los estados, bajo cualquier combinación de sus entradas de control, debe existir una y
solo una transición válida.
● Las variables de salida deben asignarse coherentemente en cada estado.
PD: Nunca intentar diseñar una FSM dentro de otra.