Está en la página 1de 3

 

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  paralelo­paralelo.  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   pseudo­có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. 

También podría gustarte