INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es...

23
INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN LABORATORIO DE SISTEMAS DIGITALES REPORTE FINAL DEL PROYECTO: CIRCUITOS PARA SEGURIDAD EN MICROPROCESADORES REGISTRO CGPI: 20061005 DIRECTOR DEL PROYECTO: M. EN C. OSVALDO ESPINOSA SOSA

Transcript of INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es...

Page 1: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN

LABORATORIO DE SISTEMAS DIGITALES

REPORTE FINAL DEL PROYECTO:

CIRCUITOS PARA SEGURIDAD EN MICROPROCESADORES

REGISTRO CGPI: 20061005

DIRECTOR DEL PROYECTO:

M. EN C. OSVALDO ESPINOSA SOSA

Page 2: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

2

ÍNDICE

Resumen 3

Importancia de la seguridad y la criptografía 4

Criptografía de llave secreta 5

Criptografía de llave pública 6

Operaciones fundamentales en algoritmos criptográficos 6

Procesadores seguros para disminuir el efecto de la piratería y

alteración de datos

7

El algoritmo RC5 como caso de estudio 8

Propuesta de circuitos 10

Encriptación a nivel del microprocesador 13

Metodología 15

Resultados 20

Conclusiones 22

Referencias 22

Page 3: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

3

RESUMEN

Las grandes compañías están invirtiendo cada vez más recursos para lograr

procesamiento seguro y a la vez para disminuir los efectos perjudiciales de la

piratería, por lo que se está pensando en codificar la información de los programas

tanto para la instalación de las aplicaciones como para su almacenamiento en

memoria. En ese sentido, se está pensando en colocar unidades de encriptación y

desencriptación en diversas partes del sistema computador. Las comunicaciones

por red, con el teclado, la unidad de disco etc. tendrán componentes de

codificación a fin de evitar que personas malintencionadas puedan espiar el

trabajo de otros. En particular se espera proponer un esquema de

encriptado/desencriptado ubicado entre alguno de los niveles de la memoria caché

y la unidad de búsqueda de instrucciones y de acceso a datos por parte del

procesador. El estudio se basa principalmente en simulación. Se utiliza para este

propósito un simulador como el "simplescalar 3.0" para realizar el estudio del

impacto sobre el rendimiento que tiene el incorporar la seguridad al

microprocesador.

Page 4: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

4

IMPORTANCIA DE LA SEGURIDAD Y LA CRIPTOGRAFÍA

La seguridad en los procesos de comunicación para información confidencial ya

no es exclusiva del ejército o del gobierno. Todo intercambio de información como

transacciones bancarias, números de tarjetas de crédito a través de la red y las

comunicaciones son ahora práctica comunes.

Para proteger los datos en una computadora y en sistemas de comunicación de

acceso no autorizado y modificación, medios con cualidades de no intercepción

para almacenamiento de datos y transmisión deben ser adoptados. Un cifrador

criptográfico puede ocultar el contenido actual de cada mensaje, transformándolo

(cifrándolo) antes de la transmisión o el almacenamiento.

Las técnicas necesarias para proteger la información pertenecen al campo de la

criptografía. La criptografía es el estudio de las técnicas matemáticas relacionadas

a aspectos de seguridad de la información tales como: confidencialidad, integridad

de los datos, autenticación de la entidad y autenticación del origen de los datos.

Estas características se muestran como sigue:

Confidencialidad: Consiste en garantizar que los datos sean entendidos

sólo por aquellos a los que están destinados.

Integridad de los datos: Es una propiedad que está relacionada con evitar la

alteración no autorizada de la información (cambios, destrucción o

pérdidas).

Autenticación: Es decir identificación de las partes en comunicación y de la

información.

No repudiación: Característica la cual previene a una entidad de denegar

previos acuerdos o acciones.

Page 5: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

5

En el lenguaje da la criptografía, el mensaje es llamado texto plano.

Codificar la información para ocultarla de extraños es un proceso llamado

encriptación.

El mensaje encriptado es llamado texto cifrado.

El proceso de recuperar el texto plano a partir del texto cifrado es llamado

desencriptación.

La encriptación y la desencriptación usualmente usan una llave. Una vez que el

texto plano ha sido encriptado con una llave, sólo podrá recuperarse conociendo la

llave adecuada.

La criptografía puede dividirse en dos: criptografía de llave secreta y criptografía

de llave pública. En algunos casos una combinación de ambas es deseable.

CRIPTOGRAFÍA DE LLAVE SECRETA

La criptografía de llave secreta o simétrica hace uso de la misma llave para la

encriptación y la desencriptación (o la llave para desencriptar se deriva fácilmente

de la llave de encriptación). Las llaves en este tipo de criptografía son mantenidas

en secreto y deben ser conocidas sólo por las dos entidades en comunicación

para realizar la encriptación y la desencriptación. Este tipo de algoritmos son

rápidos y utilizados para procesar grandes volúmenes de datos.

Algunos de los más populares algoritmos de este tipo son: DES (Data Encryption

Standard) que es ampliamente utilizado así como TripleDES (Una variación de

DES). Un nuevo algoritmo llamado “Rijndael” se ha elegido como AES (Advanced

Encryption Standard) otro ejemplo muy popular.

Page 6: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

6

CRIPTOGRAFÍA DE LLAVE PÚBLICA

Los algoritmos asimétricos usan diferentes llaves para la encriptación y la

desencriptación, y la llave para desencriptar no es fácilmente derivable de la llave

para encriptación. Estos algoritmos usan dos llaves distintas conocidas como

públicas y privadas, éstas están relacionadas de tal forma que la pública permite

encriptar mensajes y sólo la correspondiente llave privada puede usarse para

desencriptarlos. La criptografía de curvas elípticas cae en este campo y es ahora

muy popular por su fuerza utilizando llaves más cortas que otros algoritmos.

OPERACIONES FUNDAMENTALES EN ALGORITMOS CRIPTOGRÁFI COS

Los algoritmos de llave simétrica o secreta tienen como primitivas más comunes la

permutación, sustitución, rotación, operaciones lógicas “bit-wise”, desplazamientos

circulares etc. Esta es una de las razones por las que son muy rápidos para el

proceso de encriptación.

Por otro lado, los algoritmos asimétricos o de llave pública, están basados en

problemas matemáticos más difíciles de resolver. Las primitivas más comunes en

éstos tipos de algoritmos incluyen suma/resta modular, multiplicación modular,

rotaciones de longitud variable etc. Estas operaciones proporcionan fortaleza al

algoritmo pero también incrementan la complejidad de la implementación: ocupan

más espacio y consumen más tiempo. Los algoritmos de este tipo no son usados

para manejar grandes volúmenes de información, pero sí son útiles en

aplicaciones como intercambio de llaves, firma y verificación etc.

En ambos casos es importante considerar la longitud de la llave, pues a mayor

número de bits, mayor fuerza tendrá el algoritmo. Los algoritmos modernos no

tienen menos de 80 bits y sin embargo existen algunos que pueden tener más de

mil.

Page 7: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

7

La longitud de las llaves de los algoritmos criptográficos restringe el flujo paralelo

de los datos en procesadores de propósito general de 8, 16 y 32 bits, resultando

en altos retardos en tiempo para la ejecución de algoritmos. El anterior no es el

caso de arquitecturas en “hardware” dedicadas.

En “software”, todas las iteraciones son ejecutadas secuencialmente mientras que

en “hardware”, todas la iteraciones pueden ser implementadas en forma paralela

asegurando significativas mejoras en los tiempos de ejecución.

PROCESADORES SEGUROS PARA DISMINUIR EL EFECTO DE LA

PIRATERÍA Y ALTERACIÓN DE DATOS.

Debido a la piratería del “software” y a los ataques de virus, se están realizando

esfuerzos para mejorar la seguridad en los sistemas de cómputo. La idea principal

es que cualquier elemento distinto del procesador es vulnerable a los ataques.

Recientemente, una arquitectura de memoria de solo-ejecución XOM (por sus

siglas en inglés) ha sido propuesta para evitar los problemas ya mencionados. En

el diseño, programa y datos son almacenados en forma encriptada fuera de la

frontera del procesador. La desencriptación es llevada a cabo después buscar y

traer datos desde la memoria y antes de ser usados por el CPU. Como resultado

la trayectoria de acceso es ahora más larga y eso puede causar una degradación

importante del rendimiento del sistema.

En un articulo escrito por Jun Yang, Youtao Zhang y Lan Gao denominado “Fast

Secure Processor for Inhibiting Software Piracy and Tampering” se presenta una

técnica en la cual el cómputo relacionado con la criptografía se realiza en paralelo

con los accesos a memoria, lo cual requiere sólo de un poco de almacenamiento

extra, disminuyendo la penalización de acceso a la memoria.

Page 8: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

8

Experimentos realizados muestran la relación entre el tamaño del almacenamiento

y la pérdida de rendimiento.

En otro trabajo denominado “Efficient Memory Integrity Verification and Encryption

for Secure Processors” se ve la conveniencia de contar con elementos de

procesamiento seguro para las aplicaciones como comercio a través de la red,

para proteger al software contra copias, el poder tener agentes seguros etc. En

este artículo se proponen mecanismos de “hardware” para verificar la integridad

de la memoria y encriptación, los cuales son dos componentes importantes en

procesadores seguros.

EL ALGORITMO RC5 COMO CASO DE ESTUDIO

El algoritmo de encriptación RC5 tiene varias características importantes entre las

que destacan:

Es un algoritmo muy simple en su estructura por lo que la rapidez está

garantizada así como la facilidad de implementación.

Consta de sólo tres operaciones básicas: sumas/restas, operaciones XOR

(OR exclusivas) y rotaciones.

La llave utilizada para encriptar es la misma para desencriptar (simétrico).

El grado de seguridad ofrecido depende en gran medida del número de

iteraciones empleado.

El algoritmo es parametrizado, es decir se emplean tres datos importantes en su

definición: w que es la longitud de la palabra a encriptar, típicamente 32. El

siguiente parámetro es r, que indica el número de iteraciones. Es evidente que a

Page 9: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

9

mayor número de iteraciones el algoritmo ofrecerá mayor seguridad aunque

requerirá más tiempo. Típicamente el valor de r es 12. Finalmente se utiliza una

llave K la cual puede ser de cualquier longitud y cuya longitud en bytes está dada

por el parámetro b. La notación para una particular parametrización del algoritmo

es la siguiente: RC5-w/r/b. Una elección muy utilizada de los parámetros es RC5-

32/12/16. Adicionalmente debe tomarse en cuenta una tabla de coeficientes

generados a partir de la llave y que se denomina S cuyo tamaño es 2(r+1).

El algoritmo de encriptación está definido en pseudo-código a continuación:

A=A+S[0];

B=B+S[1];

for i= 1 to r do

A=((A xor B) <<< B)+S[2*i];

B=((B xor A) <<< A)+S[2*i+1];

De la misma manera el algoritmo de desencriptación está dado por:

for i=r downto 1 do

B=((B-S[2*i+1])>>>A) xor A;

A=((A-S[2*i])>>>B) xor B;

B=B-S[1];

A=A-S[0];

Las rotaciones están determinadas por los bits menos significativos del registro en

cuestión, donde dicho número de bits corresponde al log2 del número w. Los

detalles sobre la expansión de la llave K para formar la tabla S se pueden

consultar en [1].

Page 10: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

10

PROPUESTAS DE CIRCUITOS

El primer circuito a considerar es un esquema cuyo propósito es implementar el

algoritmo RC5 con una cantidad de recursos que prácticamente no cambia con el

número de iteraciones (a excepción de las tablas de coeficientes implementadas

en memorias ROM). El esquema con recursos mínimos para encriptar lo

llamaremos circuito 1-a y se presenta a continuación en la figura 1:

figura 1. Diagrama del circuito 1-a. El circuito funciona de la siguiente manera: Durante el primer ciclo los registros A

y B se cargan con el resultado de la suma de las entradas A y B con los

elementos S[0] y S[1] respectivamente, a partir del segundo ciclo se calculan las

iteraciones o rounds, cada uno consiste en obtener el resultado de la operación

OR exclusiva entre los valores de los registros A y B para sufrir posteriormente

una rotación a la izquierda (<<<). Por la rama del registro A se produce una

rotación a la izquierda usando los bits menos significativos del registro B y del

mismo modo por la rama del registro B se produce una rotación a la izquierda

Page 11: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

11

pero ahora usando los bits menos significativos del registro A. Los resultados se

sumarán a sus respectivos elementos de la tabla S.

El segundo circuito es el 1-b y corresponde al desencriptador, donde de igual

forma podemos decir que en el primer ciclo de reloj se aplican los datos A y B

para desencriptarlos, a partir del segundo ciclo comienzan las iteraciones o

rounds del algoritmo. En este caso se restan los elementos de la tabla primero

para que el resultado pueda sufrir ahora rotaciones a la derecha (>>>). La salida

del rotador sufre una operación OR exclusiva con el dato de entrada contrario, es

decir, la rama A utiliza la entrada B y visceversa. Finalmente después de la última

iteración se restan los coeficientes S[0] y S[1]. La figura 2 muestra el circuito

desencriptador llamado circuito 1-b:

figura 2. Diagrama del circuito 1-b.

Considerando que el número de iteraciones es usualmente 12, la latencia que

presentan estos circuitos es de 13 ciclos de reloj. Ambos circuitos forman el

sistema encriptador/desencriptador. Es evidente que el circuito desencriptador es

utilizado para lecturas y el encriptador se utiliza en las escrituras. Las

posibilidades de ubicar al sistema encriptador/desencriptador dentro de la

jerarquía de memoria de un procesador típico se muestran en la figura

Page 12: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

12

Los dos diagramas anteriores muestran la solución que ofrece el menor espacio

dentro del FPGA. A continuación se muestra el circuito 2-a en la figura 3, que es

un encriptador segmentado que aumenta el número de recursos a emplear dentro

del FPGA pero que potencialmente mejora la productividad.

figura 3. Diagrama del circuito 2-a En esta versión se puede notar que se han replicado los recursos para calcular

cada iteración del algoritmo. Lo cual aumentará su espacio y la cantidad de

recursos utilizados pero debido a la segmentación (que se obtiene gracias al

Page 13: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

13

conjunto de registros A y B) mejorará la productividad al trabajar como un sistema

de producción en serie. De igual modo el circuito desencriptador se muestra en la

figura 4 y será llamado 2-b.

figura 4. Diagrama del circuito 2-b ENCRIPTACIÓN A NIVEL MICROPROCESADOR

Es evidente que en la actualidad se tienen pérdidas billonarias en la industria del

software debido a la duplicación ilegal de los programas, lo que comúnmente

llamamos piratería [1]. Aunado a lo anterior están los constantes ataques por parte

Page 14: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

14

de software malintencionado que aprovechan las vulnerabilidades de los sistemas

operativos y del hardware de los sistemas de cómputo, especialmente el sistema

de memoria. Debido a lo anterior, se han propuesto técnicas basadas en soporte a

nivel del microprocesador para tratar de disminuir estos problemas, donde el

microprocesador es la única entidad autorizada para accesar a la información,

cualquier otro componente de hardware se considera vulnerable a los ataques

debido a que se puede estar monitoreando el paso de información a través de los

buses [4]. Los programas son entonces almacenados en memoria en forma

encriptada y sólo pueden ser desencriptados en el interior del microprocesador,

recordando que en procesadores actuales los dos primeros niveles de la memoria

se encuentran en el silicio que contiene al procesador, es decir en el mismo

circuito integrado.

El propósito de este trabajo es mostrar el efecto que tiene en el rendimiento de un

microprocesador superescalar (Alpha 21264) la inclusión de un sistema

encriptador/desencriptador, que como es de esperarse producirá una disminución

en el desempeño de los procesadores al aumentar la latencia de acceso a la

información contenida en algún nivel del sistema de memoria. Es importante

seleccionar el punto adecuado para realizar el proceso de encriptación y

desencriptación de modo que la pérdida de rendimiento sea la menor posible. El

sistema se puede incluir antes del nivel 1 de la memoria cache, antes del nivel 2 ó

bien en la memoria principal. Para lo anterior es importante considerar que el

acceso a la memoria cache de nivel 1 requiere sólo de uno a tres ciclos en caso

de acierto, para el caso de la cache de nivel 2 la latencia de acceso en caso de

acierto es de 6 a 12 ciclos en procesadores actuales y que para accesar a la

memoria pricipal se requieren de 100 ó más ciclos en caso de acierto.

El algoritmo de encriptación seleccionado es el RC5 debido a sus características y

muy especialmente porque es un algoritmo que es muy fácil de implementar en

hardware. El artículo nos muestra una breve descripción del algoritmo RC5, de los

circuitos que se utilizan para realizar el proceso de encriptado y desencriptado.

Page 15: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

15

También se habla de la metodología utilizada para llevar a cabo este trabajo, la

cual contempla el uso de un simulador conducido por ejecución para obtener

estadísticas detalladas de los experimentos realizados. Se muestran los

resultados de las simulaciones y finalmente aparecen las conclusiones y las

referencias bibliográficas.

El circuito encriptador/desencriptador modificará la latencia de acceso a los

distintos niveles del sistema jerarquizado de la memoria, cambiando el rendimiento

del sistema

Fig. 3. Posiciones del sistema encriptador/desencriptador a) antes de la cache de nivel 1 b) antes de la cache de nivel 2 c) antes de la memoria principal.

METODOLOGÍA

Para realizar este trabajo se utilizó el simulador Simplescalar versión 3.0 que

realiza la simulación detallada de un procesador superescalar con ejecución fuera

de orden [3], siendo este tipo de arquitectura la más utilizada en la actualidad en

procesadores para computadoras de escritorio y servidores. El simulador se

configuró con las características de un procesador Alpha 21264 debido a que ha

sido considerado como la mejor arquitectura en procesadores superescalares al

momento de su aparición. Este procesador cuenta con dos memorias caché de

Page 16: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

16

nivel 1 (Instrucciones y datos) de 64KB del tipo asociativa en dos vías con bloques

de 64 bytes. La cache de nivel 2 es unificada con un tamaño de 1 MB siendo ésta

del tipo asociativa en ocho vías con bloques de 64 bytes. Al simulador se le

aplicaron como cargas representativas de trabajo el conjunto de programas

benchmarks conocidos como SPEC CPU 2000, que se compone de 12

aplicaciones de números enteros y 14 de punto flotante. Estas aplicaciones son

programas reales de uso común. Las estadísticas que genera el simulador son

muy precisas debido a que es conducido por ejecución. En este trabajo vamos a

ver como cambia el IPC (Instrucciones por ciclo) como medida de rendimiento

conforme cambia la posición del sistema encriptador dentro de la jerarquía de

memoria del procesador. Las simulaciones se han hecho ejecutando 2x108

instrucciones de cada programa, comenzando a colectar estadísticas después de

las primeras 1x108 instrucciones con el objetivo de eliminar el efecto de la

inicialización en las estadísticas. En cada simulación se ha modificado la latencia

de acierto para el acceso a la memoria correspondiente incluyendo la latencia

debida a la inclusión del sistema de encriptación/desencriptación (13 ciclos de reloj

para el esquema propuesto).

Los microprocesadores modernos son increíbles maravillas de ingeniería que cada

vez están siendo más difíciles de evaluar. Para este trabajo se ha optado por usar

el conjunto de simuladores y herramientas conocidas como “simplescalar 3.0” que

ejecuta en forma rápida, flexible y precisa las simulaciones de un procesador

superescalar moderno (en nuestro caso hemos escogido el procesador Alpha

21264 como arquitectura de referencia debido a que los expertos lo consideran

como el procesador mejor planeado). La herramienta toma archivos ejecutables

compilados especialmente para la arquitectura y simula sus ejecuciones en uno de

varios simuladores provistos para tal efecto. Las ventajas de este conjunto de

herramientas son la alta flexibilidad, portabilidad y desempeño. Las herramientas

incluyen cinco simuladores conducidos por ejecución, los cuales varían de una

simulación funcional extremadamente rápida hasta un simulador muy detallado de

un procesador superescalar con ejecución fuera de orden que soporta caches no

Page 17: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

17

bloqueantes y ejecución especulativa. El conjunto de herramientas se muestra en

la siguiente figura:

Los componentes del conjunto de herramientas simplescalar

El simulador usado de este conjunto de herramientas se denomina sim-outorder, y

define una arquitectura como la que se muestra a continuación en un diagrama a

bloques:

Page 18: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

18

El procesador modelado por el simulador

Las características propias del procesador a simular se incluyen en un archivo de

configuración que como se había comentado incluye las características del Alpha

21264 como arquitectura referencia, dicho archivo se muestra a continuación:

# # sim-outorder configuration ALpha 21264 # # random number generator seed (0 for timer seed) -seed 1 # instruction fetch queue size (in insts) -fetch:ifqsize 4 # extra branch mis-prediction latency -fetch:mplat 3 # branch predictor type {nottaken|taken|perfect|bim od|2lev} -bpred bimod # numero de instrucciones a ejecutar -max:inst 1000000 # numero de instrucciones para comenzar a tomar est adisticas -fastfwd 500000 # bimodal predictor BTB size -bpred:bimod 2048 # 2-level predictor config (<l1size> <l2size> <hist _size>) -bpred:2lev 1 1024 8 # instruction decode B/W (insts/cycle)

Page 19: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

19

-decode:width 4 # instruction issue B/W (insts/cycle) -issue:width 4 # run pipeline with in-order issue -issue:inorder false # issue instructions down wrong execution paths -issue:wrongpath true # register update unit (RUU) size -ruu:size 16 # load/store queue (LSQ) size -lsq:size 8 # l1 data cache config, i.e., {<config>|none} -cache:dl1 dl1:128:32:4:l # l1 data cache hit latency (in cycles) -cache:dl1lat 1 # l2 data cache config, i.e., {<config>|none} -cache:dl2 ul2:1024:64:4:l # l2 data cache hit latency (in cycles) -cache:dl2lat 6 # l1 inst cache config, i.e., {<config>|dl1|dl2|non e} -cache:il1 il1:512:32:1:l # l1 instruction cache hit latency (in cycles) -cache:il1lat 1 # l2 instruction cache config, i.e., {<config>|dl2| none} -cache:il2 dl2 # l2 instruction cache hit latency (in cycles) -cache:il2lat 6 # flush caches on system calls -cache:flush false # convert 64-bit inst addresses to 32-bit inst equi valents -cache:icompress false # memory access latency (<first_chunk> <inter_chunk >) -mem:lat 18 2 # memory access bus width (in bytes) -mem:width 8 # instruction TLB config, i.e., {<config>|none} -tlb:itlb itlb:16:4096:4:l # data TLB config, i.e., {<config>|none} -tlb:dtlb dtlb:32:4096:4:l # inst/data TLB miss latency (in cycles) -tlb:lat 30 # total number of integer ALU's available -res:ialu 4 # total number of integer multiplier/dividers avail able -res:imult 1 # total number of memory system ports available (to CPU) -res:memport 2

Page 20: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

20

# total number of floating point ALU's available -res:fpalu 4 # total number of floating point multiplier/divider s available -res:fpmult 1 # operate in backward-compatible bugs mode (for tes ting only) -bugcompat false

Archivo de configuración del simulador

RESULTADOS

El resultado de la implementación de los circuitos de encriptación 1-a y 1-b nos

indica una utilización de 12% de los recursos del FPGA utilizados por cada uno, si

deseáramos tener ambos circuitos en el FPGA el consumo de recursos sería del

24%. Es importante hacer notar que la latencia mostrada por este circuito para

entregar un dato es de r+1 ciclos de reloj y dicha latencia se presenta por cada

par de datos a encriptar por lo que si quisiéramos encriptar 10 pares de datos el

número total de ciclos requeridos para realizar el cálculo sería de 130, recordar

que nos estamos basando en un parámetro r = 12.

Por otro lado los circuitos 2-a y 2-b muestran un incremento notable en el número

de recursos utilizados dependiendo del número de iteraciones o rounds

empleados. Cuando el circuito itera solo una vez, se consume un 9% de los

recursos del FPGA, cuando itera 2 veces aumenta a 17, con tres iteraciones a

25% y así sucesivamente incrementando 8% de los recursos del FPGA a utilizar

por cada iteración adicional. Si el valor de r=12, el total de recursos utilizados es

del 97%, con lo que el dispositivo utilizado prácticamente no tiene espacio para

otro circuito adicional y en este caso cabría solo en encriptador o el

desencriptador. Cabe hacer notar que la latencia presentada por estos circuitos

es también de 13 ciclos de reloj pero a diferencia de los dos circuitos anteriores

ésta se aprecia una sola vez, ya que si los pares de datos se procesan uno tras

otro el número de ciclos requerido para procesar 10 pares de datos será de

13+9=22 es decir 13 ciclos del primer dato y 9 ciclos para arrojar los restantes

Page 21: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

21

pares, uno par por cada ciclo. Lo que aumenta notablemente la productividad (22

ciclos contra 130).

Los procesos de simulación arrojaron como resultado la gráfica que se observa en

la figura 4. Se pueden obtener varios datos importantes. El IPC mostrado cuando

el sistema no tiene encriptación es siempre el mayor. El peor de los casos se

presenta cuando el sistema de encriptación/desencriptación se coloca entre el

procesador y el primer nivel de la memoria cache obteniéndose en uno de los

programas una baja de 32% en el IPC. Los mejores resultados se obtuvieron

cuando el sistema se coloca entre los niveles 1 y 2 de la memoria cache, donde el

peor de los casos disminuye en sólo 11% el IPC. Para el caso de colocar el

sistema al nivel de la memoria principal (RAM) se obtuvo que en el peor de los

casos disminuye el IPC en 29%. Este resultado puede parecer sorprendente, ya

que se podría pensar que la latencia de acceso a la memoria principal (que es la

mayor de todas) podría ocultar mejor la latencia del circuito

encriptador/desencriptador. Al parecer la latencia del circuito (13 ciclos por cada

par de datos) afecta en forma importante al sistema de memoria RAM, ya que

extiende la latencia de acceso a los bloques posteriores al primero (que es el que

muestra la latencia inicial) en una búsqueda pasando de ser de dos ciclos

(típicamente en procesadores actuales) a un número mayor.

Page 22: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

22

Efecto de un encriptador RC5

00,5

11,5

22,5

33,5

4

amm

p:aps

i:

bzip2

:eo

n:

face

rec:

galg

el: gcc:

lucas

:

mes

a:

pars

er:

sixtra

ck:

twolf

:vp

r:

IPC

s/enc

L1

L2

RAM

fig 4. Efecto del encriptador RC5 en los distintos niveles de la jerarquía de la memoria.

CONCLUSIONES Como se pude apreciar en los resultados los circuitos 1-a y 1-b son compactos y

ocupan poco espacio en el FPGA pudiendo tener a ambos dentro del mismo,

pagando el costo de una elevada influencia de la latencia. Los circuitos 2-a y 2-b

mejoran en mucho este aspecto aumentando la productividad del circuito a costa

de un elevado uso de los recursos del FPGA. El uso de uno u otro par de circuitos

dependerá de las características del diseño, debiendo elegir entre rapidez o

tamaño, o bien realizando un balance entre tamaño y rapidez disminuyendo el

número de iteraciones o rounds.

En este trabajo se analizó el efecto de incluir un circuito de encriptación en el

sistema jerarquizado de la memoria de un procesador superescalar,

encontrándose que la mejor opción con los parámetros dados del algoritmo

elegido (RC5) es colocarlo en el nivel 2 de la memoria cache, en donde la

disminución del IPC es de sólo 11%, lo cual es un resultado aceptable

incrementando el nivel de seguridad de los sistemas de cómputo.

REFERENCIAS � Rivest,R.L. The RC5 encryption algorithm. � ISE WebPack. User’s guide. www.xilinx.com

Page 23: INSTITUTO POLITÉCNICO NACIONALsappi.ipn.mx/cgpi/archivos_anexo/20061005_3713.pdf · no es exclusiva del ejército o del gobierno. Todo intercambio de información como transacciones

23

� Yang,Zhang,Gao. Fast secure processorfor inhibiting software piracy and tampering. Proceedings of the 36th International Symposium on Microarchitecture MICRO 36-2003.

� Ruby B. Lee, Peter C. S. Kwan. Architecture for protecting critical secrets in microprocessors. Proceedings of the 32nd Annual International Symposium on Computer Architecture 2005.

� “An Introduction to Cryptography,” Network Associates, Inc., http://www.pgpi.org/doc/pgpintro, 1999.

� T. Gilmont, J.-D. Legat, and J.-J. Quisquater, “Enhancing the Security in the Memory Management Unit,” Proceedings of the 25th EuroMicro Conference, pages 449–456, September 1999.

� http://www.specbench.org/osg/cpu2000. � M. Kuhn, “The TrustNo1 Cryptoprocessor Concept,” Technical Report, Purdue University, April

1997. � D. Lie, J.Mitchell, C. A. Thekkath, and M. Horwitz, “Specifying and Verifying Hardware for

Tamper-Resistant Software,” IEEE Symposium on Security and Privacy, 2003. � D. Lie, C. Thekkath, M. Mitchell, P. Lincoln, D. Boneh, J. Mitchell, and M. Horwitz,

“Architectural Support for Copy and Tamper Resistant Software,” ACM 9th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-IX), pages 168–177, November 2000.

� T. Maude and D. Maude, “Hardware Protection Against Software Piracy,” Communication of the ACM, Volume 27,Number 9, pages 950–959, September 1984.

� G. E. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. � Devadas, "AEGIS: Architecture for Tamper-Evident and Tamper-Resistant Processing," Proc.

of the 17th Int’l Conf. on Supercomputing (ICS), 2003.