“METODOS DE OCULTAMIENTO DE DATOS BASADOS EN SECUENCIAS DE ADN” 75.19 - TEORIA DE COMUNICACION Entrega: Método del par complementario 05/06/2012 UNIVERSIDAD DE BUENOS AIRES Nicolás Tudela 83593 – Diego Costa 78189 Entrega método del par complementario Conceptos previos Para el desarrollo del método del par complementario, es necesario comprender los conceptos utilizados y descriptos para el desarrollo del método de inserción. Además, para el desarrollo de dicho método, se utilizara el concepto de “Par de Base”, cuyo significado detallado en la rama de la biología puede encontrarse en algún libro de biología molecular. Para el desarrollo de este método de ocultamiento de datos, pares complementarios deben ser definidos. Esto es, una contraparte única asignada para cada par de base. Por ejemplo, la siguiente regla complementaria puede aplicar: ((AC)(CG)(GT)(TA)) Utilizando dicha regla complementaria, entonces, el complemento de AATGC será CCATG. Método del par complementario Por ejemplo, en la secuencia: "ATCTGAATGCTTGTCTACCATGTCAAT", existe un par de cadenas complementarias indicado en negrita con longitud de 5. Para encontrar la cadena complementaria mas larga en una cadena de ADN, podría aplicarse algún método de programación dinámica, aunque para el presente trabajo, implementamos una solución ‘naive’. Asumiremos que el mensaje secreto M tendrá un numero par de bits. Notemos que en nuestro caso, esta asunción es razonable, ya que en nuestra implementación cada caracter del mensaje ocupa 8 bits en su forma binaria. Para poder encriptar utilizando este método, necesitaremos, como en los otros 2, una cadena de referencia (S). El método consiste en encontrar el par de cadenas complementarias mas larga presentes en la cadena de referencia S, tomar su tamaño (k), generar cadenas complementarias de largo k+1 aleatoriamente y luego usando pedazos del mensaje como prefijo del primer elemento del par complementario, insertarlo en la cadena de referencia. La utilización del cadenas de largo k+1 garantiza que serán los pares de mayor longitud, con lo cual, será fácil encontrar el prefijo del primer elemento del par y reconstruir el mensaje original. Encriptación Para encriptar utilizando el método del par complementario, debemos tener como parámetros de entrada: Una cadena de ADN de referencia Un mensaje a encriptar Los pasos para la encriptación son los siguientes: Convertir el mensaje M en su representación binaria (utilizaremos la conversión binaria de cadenas desarrollada en el método de Inserción que asigna 8 bits a cada carácter de un mensaje) y luego dividirlo en segmentos tal que cada segmento tenga 2 bits. Luego, aplico la inversa de la regla de codificación binaria (también desarrollada para el método de Inserción) para obtener un nucleótido por cada segmento del mensaje Obtener la longitud del par complementario mas largo de la cadena de referencia (S), y la denotamos k. Generar pares complementarios de manera random (se generan tantos pares complementarios como segmentos haya del mensaje). La longitud de dichos pares complementarios será k + 1. Además, a cada par complementario, se le agregara al principio y al final (de cada elemento del par) un nucleótido “T”, con la esperanza de que al incluirlos en la cadena S, estos pares se mantengan como los más largos, haciendo posible encontrarlos en un futuro. Se genera la cadena S’, intercalando en la cadena S original, los pares generados en el punto anterior. Antes del primer elemento de cada par, se inserta un segmento i del mensaje a encriptar. Se evalúa la cadena S’ generada, para garantizar que los pares complementarios mas largos sean los que generamos en el punto 2 e insertamos en el punto 3. Si no se cumple esta condición, se vuelve al punto 2 (para generar nuevos pares complementarios aleatoriamente). Esta condición puede darse cuando, usando un segmento del mensaje como prefijo del primer elemento del par complementario, se genera un complemento al insertar el segundo elemento del par complementario generado aleatoriamente, en una posición posterior de la cadena S’. Si se cumple la condición, entonces esta nueva cadena S’ es la secuencia de ADN falsa a emitir. Notar que el nucleótido T utilizado en el paso 2 puede ser remplazado por cualquiera de los otros 3 nucleótidos (A C G). Desencriptación Se recibe del emisor, un conjunto de cadenas de ADN falsas (una de ellas contiene el mensaje), una cadena de ADN llamada S (de referencia) y la longitud k (la longitud de los pares complementarios de mayor longitud de la cadena S). Las reglas de codificación binaria y las reglas complementarias son las mismas que las que se utilizaron para encriptar. Por cada cadena recibida en el conjunto, aplico el algoritmo que busca los pares complementarios de mayor longitud. Si la longitud de dichos pares no concuerda con la longitud k recibida, proceso la siguiente cadena del conjunto. Para los pares complementarios encontrados en la fake sequence, tomo el nucleótido inmediatamente anterior al nucleótido T que precede al primer elemento del par. Este nucleótido será un segmento del mensaje. Lo guardamos en una lista y eliminamos dicho nucleótido y el par complementario de la cadena falsa (junto con sus caracteres T anteriores y posteriores a cada elemento del par). Una vez que procesamos todos los pares complementarios, lo que quedo en la cadena falsa debe ser equivalente a la cadena de referencia S recibida. Si no se cumple esta afirmación, se vuelve al paso 1. Se concatenan todos los segmentos de mensajes, se aplica la regla de conversión binaria (de los nucleótidos obtengo un mensaje en binario). Luego con dicho mensaje en binario, aplico la inversa de la codificación binaria de caracteres, y obtengo el mensaje M buscado. Limitaciones de implementación: Si bien se provee un mecanismo para intentar que los pares complementarios generados aleatoriamente (en el paso 2 del método de encriptación) se mantengan como los de mayor longitud, existe la posibilidad de que al intercalarlos en la cadena de referencia S se generen pares complementarios mas largos que los anteriores (Por ello se realiza un chequeo de dicha condición en el paso 4 del método de encriptación). Para reforzar el control y para no quedarse en un loop infinito si se presenta dicha condición, pusimos un corte y un número de reintentos igual a 40. Es decir, se prueba de generar pares complementarios aleatorios y de encriptar el mensaje hasta 40 veces. Si las 40 veces se generaron pares aleatorios de mayor longitud en la intercalación, el algoritmo lanza un error. Probabilidades de ataques de intrusos La probabilidad de un ataque exitoso, depende de que un intruso obtenga: a) La cadena de Referencia S: Hay 163 millones de cadenas de ADN publicadas. Entonces, la probabilidad de adivinar la cadena utilizada es de b) La regla complementaria: Hay 4 posibilidades para cada una de las 4 letras del alfabeto utilizado para los nucleótidos. Entonces, la cantidad total de reglas complementarias es de 4 x 3 x 2 x 1 = 24. Por lo tanto, la probabilidad de adivinar la cadena utilizada es de 1/24 c) La regla de codificación binaria: Hay 4 posibilidades por cada letra del alfabeto, por lo tanto, el número de posibles reglas de codificación binaria es 24. Entonces, la posibilidad de adivinar la regla de codificación binaria es 1/24 Por lo tanto, la posibilidad de un ataque exitoso al método de par complementario, es de x 1/24 x 1/24. Además, hay que agregarle el costo de obtener los pares complementarios más largos de una cadena.