Encripción de Bases de Datos Hoy en día es muy importante tomar medidas de seguridad, para mantener la confidencialidad e integridad de nuestra información. La mayor parte de la información se encuentra almacenada en Bases de Datos, la cual se encuentra en texto claro, por lo que están expuestos a cualquier ataque. A continuación presentamos un esquema de encripción que podría ayudarnos a mantener las bases de datos seguras. Para entender la idea de este esquema, explicaremos algunas definiciones y conceptos que nos ayudaran. Empezamos dando una breve definición de que es una Base de datos. Una Base de datos es un conjunto autodescriptivo de registros integrados. Es decir, además de los datos fuente de la información contiene también una descripción de su propia estructura. Tal descripción conocida como diccionario de datos. El diccionario de datos hace posible la independencia entre el programa y los datos. Ahora bien, al hablar de encripción de Bases de datos, tenemos que considerar el DBMS (Sistema Manejador de Bases de Datos) el cual es un Software que controla la organización, almacenamiento, recuperación, seguridad e integridad de los datos en una base de datos. Ya hablaremos mas delante de la importancia del DBMS. Para poder entender la idea principal de este trabajo, "Encripción de Bases de Datos", necesitamos también conocer que es encripción y esto va unido a la definición de criptología. Criptología.- Ciencia que estudia los aspectos y contenidos de información en condiciones de secrecía. La criptología se divide en: Criptografía.- Es el conjunto de técnicas o procedimientos que alteran los símbolos de información sin alterar el contenido, convirtiendo a la información modificada en un conjunto de símbolos sin contenido para las partes que no disponen de las técnicas Criptoanálisis.- Metodologías y técnicas que permiten recuperar la información que ha sido previamente tratada por un procedimiento criptográfico, sin conocer "a priori" la técnica utilizada para la criptografía. El cifrado es un método secreto de escritura, por medio del cual un texto plano es transformado en un texto cifrado, algunas veces llamado criptograma. El proceso de transformación del texto claro en un texto cifrado es llamado encripción, el proceso inverso es llamado decripción. Existen diferentes métodos para garantizar la seguridad de una base de datos, pero ninguno por si solo nos puede garantizar un 100%, tanto de la confidencialidad como de la integridad de la base de datos. Es necesario combinar varios mecanismos para lograr la seguridad deseada. Ejemplos de métodos de seguridad para mantener protegida una base de datos Seguridad física Sistemas de autenticación Encripción Ninguno de los dos primeros métodos mantienen la seguridad de los datos, ya que estos existen en texto claro en la base de datos. Este problema podría resolverse sí encriptamos los datos. Pero la encripción por si sola tampoco asegura la integridad y autenticidad de los datos, por lo que tenemos que combinar los varios métodos y mecanismos de seguridad para mantener la privacía de una base de datos. En este punto nos damos cuenta de la utilidad que tendría la encripción de bases de datos, que es un complemento a los mecanismos ya existentes para mantener la confidencialidad de los datos. Para lograr la seguridad de las bases de datos debemos de tomar en cuenta las siguientes características de las medidas de seguridad. 1.- Ninguna persona o grupo de personas deben ser capaces de leer, escribir, destruir, o modificar datos directamente de una manera no autorizada. 2.- Para cualquier persona o grupo de personas, debe ser imposible inferir el valor de cualquier objeto dato por manipulación directo o computacional sobre los datos. 3.- Los mecanismos de seguridad pueden ser flexibles. Los usuarios podrán ser habilitados para poseer privilegios de lectura y escritura en cualquier combinación de acuerdo a sus obligaciones y necesidades. 4.- Los mecanismos de seguridad no deben degradar el desempeño de las operaciones básicas de la base de datos. 5.- La accesibilidad del sistema debe ser reducida. 6.- No debería haber un aumento grande en el almacenamiento de datos. 7.- El costo debería ser razonable. Debemos de saber que en un sistema de bases de datos, un componente esencial e importante es el DBMS. El DBMS es la primera línea de defensa en contraste con los usuarios. El DBMS conoce que datos son manipulados. Incluso un usuario puede ser impedido eficientemente para obtener datos a través de un canal permitido, El DBMS puede filtrar datos en forma natural por omisión o subversión. Entradas falsas o actualizaciones pueden ser hechas por cualquier penetración al DBMS. Si los datos no están en forma legible, obtener los datos no les servirá de nada a personas que no sean propietarias de una llave para decriptar. Como podemos darnos cuenta aquí es donde la encripción nos ayuda a impedir que los datos este de forma legible. El problema de la autenticidad de datos también puede ser resuelto con la encripción. Un atacante no conoce como sé encriptó, por lo tanto será imposible crear registros que parezcan legítimos cuando sea decriptado por un usuario legitimo. Ahora que ya se comprendió la necesidad del uso de encripción de bases de datos, mostraremos las características de un sistema de encripción de Base de Datos. 1.- El sistema de encripción debe ser teóricamente seguro o requerir un trabajo extremadamente alto para romperlo. Esto es imposible de garantizar. 2.- La encripción y la decripción deben ser suficientemente rápidos, no es aceptable degradar el desempeño del sistema. Para bases de datos, es muy importante la decripción ya que será hecho con mas frecuencia . 3.- La encripción de los datos no debe tener significativamente mas volumen que los datos decriptados. 4- La encripción de datos debe ser orientado a registros. Donde una base de datos, es relacional, red o jerárquica, u orientada a campos, la unidad básica de la información para localizarla es el registro. Debe ser posible el desempeño de la encripción y decripción sobre un solo registro sin considerar una posición física o lógica en la base de datos esta propiedad es requerida para que pueda ser determinado por observación que la posición de un registro puede ser cambiada, y si esto llega a pasar, no debe haber la necesidad de decriptar n-1 registros sin desear estos registros en orden para decriptar el n registro en secuencia. Así debemos eliminar el flujo cifrado. 5.- La encripción debe soportar la lógica del enfoque del subesquema para bases de datos. El DBMS presenta a un usuario solo los campos, que ha solicitado y sobre todo solo sobre a los que tiene acceso. El sistema de encripción debe impedir que si un atacante obtiene partes del registro ilegítimamente, el atacante debe de ser incapaz de usarlos. 6.- Un registro encriptado no debe consistir de una serie de campos encriptados individualmente. Mas bien un registro encriptado debe ser un valor encriptado individualmente el cual es una función de todos los campos. Esto previene dos cosas: la comparación de patrones y la substitución de valores encriptados. 7.- El esquema de encripción debe ser tan flexible como sea posible estimando las combinaciones de privilegios de escritura y lectura los cuales pueden ser concedidos y las condiciones bajo las cuales pueden leer y escribir. Idealmente esto debería ser posible para dar a cada usuario privilegios de lectura y escritura por cada campo. Todo usuario o un grupo de usuarios debería ser incapaz de obtener derechos no permitidos. 8.- Idealmente, el DBMS deberá poder detectar y rechazar registros los cuales fueron creados o modificados bajo una falsa llave de encripción sin ser capaz de determinar que datos son. En cualquier evento el esquema de encripción deberá ser como un usuario legítimo, sobre la encripción podrá identificar un registro falso. En otras palabras cada registro deberá contener alguna forma de firma digital la cual llegara a ser apreciable cuando el registro sea decriptado. 9.- El DBMS no deberá ser forzado por el sistema de encripción a guardar copias duplicadas de objetos de datos en orden para permitir el subesquema ser presentado. 10.- Los registros probablemente serán construidos sobre un periodo de tiempo, esto deberá ser posible recuperar información de registros parcialmente completos en una forma igual, esto es recuperado de registros llenos. Propuesta Anterior Existe una propuesta de un esquema de encripción de bases de datos la cual propone lo siguiente: Un esquema de encripción orientado a registro en el cual un registro encriptado es una función individual de todos los valores de estos campos, y en los cuales cada campo separado es encriptado/decriptado por llaves separadas. Podemos llamar a cada esquema un sistema de encripción usando subllaves. Las llaves son subllaves en el sentido que mientras la encripción de registros es una función de todas las llaves de encripción y los valores de los campos, cada llave de decripción decriptará solo un subconjunto de campos del registro original. Esto puede ser descrito matemáticamente como Ci = E ((e1,f1i),(e2,f2i),...,(en,fni)) Fij=D(di,Ci), Donde fij es el valor del campo j y el registro i; ej, la llave de encripción para el campo j; dj, la llave de decripción por cada campo j; Ci, la versión encriptada del registro i; E, el algoritmo de encripción; y D, el algoritmo de decripción. E,D y Ci se asume que son conocidos por todos, donde ej y dj son conocidos solo por usuarios que tienen los privilegios correspondientes, el DBMS no tienen estos. Fji son los datos a proteger. Además ej y dj solo son conocidos por los usuarios que tienen privilegios sobre esos campos. Nuestra Propuesta Nuestra propuesta presenta algunas variantes al esquema anterior, pero las podemos mencionar en tres puntos: 1.- Nos enfocaremos al modelo relacional ya que es él mas utilizado en el modelado de Bases de Datos. 2.- Cambiaremos el esquema de encripción de subllaves a encripción simétrica, utilizando el algoritmo AES. 3.- Actualmente en varios DBMS los privilegios son administrados algún un modelo de autorización basado en el sistema R, mediante el cual se asignan privilegios. Por lo que en nuestro es quema utilizaremos este sistema para la administración de privilegios, en vez de un conjunto de llaves. Nosotros proponemos encriptar el registro como un todo, sin separaciones entre campo y campo. Con una sola llave de encripción/decripción que será elegida por el propietario o administrador de la base de datos. A diferencia del esquema anterior este algoritmo es más sencillo en cuanto a su administración y diseño por que solo existe una llave, además de ser mas seguro y rápido. Ahora surge la pregunta de ¿cómo administrar los privilegios?, bueno alguno DBMS ya cuentan con un Modelo de Autorización basado en el sistema R. Mediante el cual se puede hacer cualquier combinación y asignación de privilegios, ya sea por campo, tabla, host, o base de datos. Además que a cada usuario se le asigna un password. Por lo tanto para que un atacante tuviera acceso a los datos, tendría que obtener la llave de encripción/decripción y el password del usuario, y ambas se encuentran almacenadas de forma encriptada. Tomando en cuenta también que nuestros sistemas de bases de datos cuenta con mas mecanismos de seguridad para asegurar la autentificacion y confidencialidad, Complementando así la seguridad de nuestra base de datos. Modelo Relacional La ventaja del modelo relacional es que los datos se almacenan, al menos conceptualmente, de un modo en el que los usuarios entienden con más facilidad. Los datos se almacenan como tablas y las relaciones entre las filas y las tablas son visibles en los datos. A diferencia de los sistemas anteriores este enfoque permite a los usuarios obtener información de las bases de datos sin asistencia de sistemas profesionales de administración de información. Modelo de Autorización de una base de datos Relacional. Este modelo esta basado en el sistema R, que maneja dos tipos de relaciones. Donde se asigna los privilegios de un usuario o grupo de usuarios sobre una tabla o una vista. Y la segunda, se le asigna que conjuntos de campos abarcan los privilegios especificados en la primera relación. Ventajas principales de la encripción con AES Rijndael es una iteración de bloque cifrado con un tamaño de bloque y llave variable. La llave puede tener un tamaño de 128,192 o 256. No usa otros componentes criptográficos. No tiene partes obscuras y cosas difíciles de entender entre operaciones aritméticas. No deja espacio suficiente para esconder un trapdoor. Modo encripción en bloque ECB. Resistencia contra todos los ataques conocidos Velocidad y código compacto en una gran variedad de plataformas Simplicidad de diseño