"MÉTODO PARA VALIDACIÓN CRIPTOGRÁFICA DE CLAVE PÚBLICA DE CURVA ELÍPTICA" CAMPO DE LA INVENCIÓN Los dispositivos de nodo de red con recursos limitados frecuentemente requieren autenticar un dispositivo externo, tal como un servidor de red, para ejecutar una función critica. Por ejemplo, un dispositivo de nodo puede desear que se proporcionen datos privados, tal como una medición, ubicación o información de ID, a un sistema que se encuentra autorizado para recibirlos.
ANTECEDENTES DE LA INVENCIÓN Un planteamiento anterior proporciona un nodo con un método que busca el permiso de una autoridad, o controlador de confianza, dentro de una red. Por ejemplo, el nodo puede crear un mensaje único y enviar ese mensaje al controlador de confianza para el sistema, donde el controlador pudiese firmar el mensaje único y devolverlo al nodo. Cuando el nodo verifica la firma para el mensaje, puede continuar suponiendo que fue concedido por la autoridad por el controlador de confianza. También son conocidos los algoritmos para controlar diferentes niveles de acceso (o permisos) en la entidad huésped. Cada nivel se relaciona con un par de claves privada-pública. La capacidad de ofrecer múltiples niveles de acceso con una sola clave ofrece la ventaja de limitar el almacenamiento de múltiples claves en un sistema incorporado . También son conocidas las soluciones que utilizan protocolos de comunicación donde el dispositivo encriptar el mensaje de desafio y el servidor calcula una firma digital y la devuelve al dispositivo. Este planteamiento requiere que el dispositivo soporte múltiples funciones matemáticas, incluyendo multiplicaciones de punto de curva elíptica e inversiones de campo finito. Un planteamiento adicional encripta un mensaje de desafío que se encuentra restringido a incluir un componente aleatorio más el mensaje. El servidor puede des encriptar el mensaje y devolver la parte aleatoria del mensaje de desafío no encriptado. Este planteamiento o resuelve el tema de la simplicidad, pero entonces se ve comprometido el nivel de seguridad si el sistema requiere que un gran porcentaje del mensaje será información privada más que un valor aleatorio. Es bien sabido que los datos pueden encriptarse y después desencriptarse utilizando un par de claves, una de las cuales es pública y la otra privada. Las claves se relacionan matemáticamente de manera tal que los datos encriptados que utilizan la clave pública puedan desencriptarse utilizando la clave privada. También es sabido que puede verificarse una firma creada con la clave privada utilizando la clave pública, y que cualquiera sin la clave privada no puede generar una firma que habrá de ser validada. Los criptosistemas de clave pública más conocidos son aquellos basados en la factorización de enteros y logaritmos discretos en grupos finitos. Es bien sabido que al utilizar los cálculos en una curva elíptica definida sobre un campo finito en lugar de un criptosistema de RSA, es posible alcanzar un mayor nivel de seguridad para el mismo tamaño de clave o, inversamente, el mismo nivel de seguridad para una clave más pequeña en comparación con el criptosistema de RSA.
BREVE DESCRIPCIÓN DE LA INVENCIÓN Consecuentemente, los esquemas de encriptación de curva elíptica son muy adecuados para el ambiente incorporado, dado que los tamaños de clave son mucho más pequeños que en los esquemas de RSA ampliamente utilizados y requieren menos memoria. En un esquema de encriptación de clave pública basado en curva elíptica, existe un cierto número de parámetros de sistema que deben ser compartidos por todos los participantes con objeto de realizar el trabajo del esquema. El conjunto de parámetros del sistema consiste típicamente de los términos de definición de la curva elíptica a utilizar, así como también un punto generador designado P, representado por las coordenadas x y y, conocidas como coordenadas afines. Los parámetros que definen la curva elíptica se designan típicamente como a y b, donde el grupo de puntos en la curva elíptica se define por el grupo Ep(a,j ) para el cual y2 = x3 + ax + b, módulo p o el grupo E2m(a,J ) para el cual y2 + xy = x3 + ax2 + b, módulo 2m. El parámetro p o m (que define el campo finito de definición) también es parte del conjunto de parámetros del sistema. La curva elíptica también puede definirse en términos de coordenadas proyectivas X, Y y Z. Después, las curvas se definen por el grupo Ep(a,jb) para el cual Y2Z = X2 + aXZ2 + bZ3 , módulo p, o el grupo E2m(a,jb) para el cual Y2Z + XYZ = X3 + aX Z + bZ3 , módulo 2m. Las coordenadas afines y proyectivas se encuentran relacionadas por x = X/Z y y = Y/Z.
BREVE DESCRIPCIÓN DE LOS DIBUJOS Los rasgos novedosos considerados característicos de la invención se exponen en las reivindicaciones anexas. Sin embargo, la invención misma, así como también las modalidades preferidas de uso, y objetos adicionales y ventajas de las mismas, se comprenderán mejor haciendo referencia a la siguiente descripción detallada de una modalidad ilustrativa al ser leída en conjunto con el (los) dibujos anexos, en el (los) cual(es) : La Figura 1 es un diagrama de flujo de un método consistente con algunas modalidades de la invención. La Figura 2 es un diagrama de secuencia de un método consistente con algunas modalidades de la invención. La Figura 3 es un diagrama de secuencia de un método adicional consistente con algunas modalidades de la invención . La Figura 4 es un diagrama que muestra la generación de una cifra, c, consistente con algunas modalidades de la invención, para la transmisión y validación de información desde un transmisor hacia un receptor . La Figura 5 es un diagrama que muestra la generación de una ficha de validación, V, consistente con algunas modalidades de la invención, para la validación de la transferencia de información desde un transmisor hacia un receptor .
DESCRIPCION DETALLADA DE LA INVENCION Aunque esta invención susceptible a modalidades de muy diversas formas, muestra en los dibujos y se describirán en la presente detalladamente una o más modalidades específicas, en el entendimiento de que la presente descripción debe considerarse a manera de ejemplo de los principios de la invención y de que no pretende limitar la invención a las modalidades específicas mostradas y descritas. En la descripción expuesta a continuación, se utilizan números de referencia similares para describir las mismas partes, similares o correspondientes, en las diversas vistas de los dibujos. Un aspecto de la presente invención se refiere a un método para un dispositivo de nodo de una red a fin de compartir datos privados con un dispositivo externo, tal como un servidor remoto en la red, y para validar la recepción de los datos. De acuerdo con una modalidad, el dispositivo de nodo (algunas veces referido a continuación como el "transmisor") genera un mensaje que utiliza los datos a compartir. Después utiliza la encriptación de curva elíptica para construir un desafío para el servidor remoto y le envía ese desafío al servidor remoto. El servidor remoto (algunas veces referido en lo sucesivo como el "receptor") solamente es capaz de desencriptar el desafío y recuperar el mensaje si tiene la clave privada coincidente. El receptor genera después una ficha de validación utilizando el mensaje original y operaciones de curva elíptica con la clave privada, y envía la ficha de validación de regreso al dispositivo. Después, el dispositivo puede validar que los datos privados originales han sido devueltos exitosamente. Típicamente, el transmisor y los receptores son porciones de dispositivos electrónicos inalámbricos. Un dispositivo electrónico que comprende el transmisor puede, por ejemplo, ser un pequeño sensor de radiofrecuencia de baja potencia del tipo utilizado en las redes de radiofrecuencia ad hoc, un ejemplo de las cuales es una red Zigbee®. En otro ejemplo, un dispositivo electrónico que comprende el transmisor puede ser un controlador de equipo de radio frecuencia equipado con Bluetooth. La Figura 1 es un diagrama de flujo de un método consistente con algunas modalidades. El método se refiere a dos entidades separadas lógicamente, una con una clave pública (esta entidad es llamada "transmisor") y la otra con la clave privada correspondiente (el "receptor") . Después del bloque de inicio 102 en la Figura 1, el transmisor genera dos números aleatorios, k y r, en el bloque 104. También en el bloque 104, el transmisor genera un mensaje m que contiene identificadores de mensaje, información, i, y un número aleatorio, r. En el bloque 106, el transmisor genera una cifra c a partir del número aleatorio k, un punto generador público P, el mensaje m, y una clave pública Q del receptor. El mensaje de cifra c también actúa como un desafío para el receptor. En el bloque 108, el transmisor le envía el mensaje de cifra al receptor. En el bloque 110, el receptor descifrar el mensaje de cifra para recuperar el mensaje m' . El mensaje m' será igual al mensaje original m, visto que el receptor tiene conocimiento de la clave privada, q, que corresponde a la clave pública Q. El receptor también puede validar la información si la información de validación es incluida en el mensaje de cifra. En el bloque 112, el receptor genera una ficha de validación a partir del mensaje descifrado m' , su propia clave privada q, y la primera porción de la cifra kP. En el bloque 114, el transmisor le envía la ficha de validación al transmisor y, en el bloque 116, el transmisor verifica la ficha de validación. Si la ficha no es validada, como se representa gráficamente por la rama negativa del bloque de decisiones 118, ha ocurrido un error en la transmisión y el error es indicado con una bandera en el bloque 120. Si la ficha es validada, como se representa gráficamente por la rama positiva del bloque de decisiones 118, el éxito de la transmisión se indica con una bandera en el bloque 122 y se verifica que los datos han sido recibidos por un receptor autenticado. El proceso termina en el bloque 124. Este proceso puede utilizarse en los sistemas de tipo de red de sensor para enviarle datos confidenciales a un servidor de confianza y para verificar que el servidor recibió los datos. Además, el proceso puede utilizarse como control. Por ejemplo, el dispositivo de nodo transmitirá la información privada hasta que reciba esta ficha de validación y después dejará de enviarla ya sea para ahorrar energía o para utilizar la menor cantidad posible de energía de radiofrecuencia (RF) . El proceso requiere un procesamiento limitado y requisitos de memoria en el dispositivo, pero aún proporciona una fuerte protección criptográfica para la información en los casos en que la cantidad de datos aleatorios sea muy pequeña para considerarse criptográficamente significativa. El proceso de encriptación y validación descrito continuación se basa en una aritmética de curva elíptica y un esquema de claves públicas-y privadas. Esto garantiza que la información relacionada con la función protegida en el dispositivo que fue solicitado se transmita al servidor y no pueda ser alterada por un intermediario. También proporciona una verificación basada en una respuesta de desafío fuertemente criptográfica, y limita simultáneamente las funciones matemáticas requeridas a utilizarse por el nodo . El método comienza con un proceso de encriptación de curva elíptica, durante el cual un mensaje que contiene la información i y el valor de encriptación r es encriptado por una parte transmisora. El mensaje es desencriptado por una parte receptora. Son conocidos diversos procesos de encriptación de curva elíptica por aquellos expertos en la mat Consistente con una modalidad de la presente invención, la parte receptora válida el mensaje desencriptado m' y, si es validada positivamente, crea una ficha de validación por la multiplicación escalar del mensaje desencriptado m' y un punto en la curva elíptica conocida solamente por el transmisor y el receptor. Este punto compartido (qkP o kqP, por ejemplo) existe después de de las dos partes intercambian datos mediante el algoritmo de curva elíptica. Es bien sabido que la respuesta puede construirse utilizando el mensaje de texto plano o la parte aleatoria del mismo. El presente método no revela el mensaje de texto plano y, consecuentemente, es útil para proteger la información que fue enviada en el mensaje de desafío contra filtraciones del sistema para aquellos casos en los que el largo de la información no permita utilizar un valor aleatorio criptográficamente significativo para la respuesta. El receptor comunica la ficha de validación como respuesta al transmisor. A su vez, el transmisor válida la respuesta por la multiplicación escalar de ese punto conocido y el mensaje m. En una modalidad, se utilizan las coordenadas proyectivas en la aritmética de curva elíptica. El uso de las coordenadas proyectivas para aritmética de curva elíptica es conocido por aquellos expertos en la materia. Esta modalidad es adecuada para aplicaciones en las cuales el transmisor es un dispositivo incorporado con recursos muy limitados. El uso de coordenadas proyectivas le permite al transmisor ejecutar algoritmos de suma y multiplicación de campo finito sin una operación de inversión de campo finito computacionalmente cara. Solamente el receptor, que generalmente posee más potencia de cálculo, es requerido para ejecutar una operación de inversión de campo finito. Este planteamiento puede utilizarse para soportar tecnología de arquitectura de seguridad que puede aplicarse a procesadores utilizados para redes ad hoc y de sensor y proporciona una manera para enviarle al receptor información privada y confidencial y le permite al transmisor autenticar la recepción de esa información sin filtraciones de información confidencial. El uso de una ficha de validación, en lugar de una firma digital, requiere únicamente que el dispositivo de recursos limitados sea capaz de ejecutar un pequeño conjunto de operaciones matemáticas a fondo (en lugar de múltiples operaciones matemáticas) . En general, el método implica dos entidades separadas lógicamente, una con la clave pública, y la otra con la clave privada. La parte A con una clave pública tiene información i que necesita ser validada (o procesada en un resultado de s /no) . La información puede representar i cualquier cosa - datos, función, acceso, etc. La parte B con la clave privada posee la potencia para validar la información . El método descrito en la presente proporciona un método seguro para delegar el procesamiento en una entidad separada lógicamente. La entidad de confianza, la parte B, posee una clave privada g, la cual es un número entre 0 y el orden de la curva elíptica. La parte A, que delega el procesamiento en la parte B, posee la clave pública {P, Q) que consiste en el punto generador P en la curva elíptica (definida sobre los grupos Ep o E2m, por ejemplo) y el punto Q = qP, el cual es la multiplicación escalar del punto generador P por la clave privada q. La Figura 2 es un diagrama de secuencia de un método consistente con algunas modalidades de la invención. Este método utiliza coordenadas afines en la aritmética de curva elíptica. Haciendo referencia a la Figura 2, el transmisor 202 (parte A) tiene la información i, junto con los parámetros de sistema de la curva elíptica (los valores a y b, por ejemplo, y un punto generador P) y una clave pública Q del receptor 204 (parte B) . El receptor 204 (parte B) tiene los parámetros de sistema de la curva elíptica (los valores a y b, por ejemplo, y un punto generador P) y una clave privada q. El proceso es el siguiente . a . En 206, la parte A genera los números aleatorios k y r. b. En 208, la parte A transforma la información i en un mensaje m. En la figura, ' 1 1 ' denota concatenación. En esta modalidad, el mensaje m se limita al tamaño del campo finito al incluir el prefijo 0x01 en el mensaje. Esto evita el sobre flujo de futuras operaciones. El mensaje incluye dos representaciones, aritméticamente independientes, de la información. Esto puede ser, por ejemplo, la misma información y una versión encriptada de la información. La encriptación puede alcanzarse utilizando técnicas conocidas tales como una operación OR exclusiva' o multiplicación con un punto en una curva elíptica. Opcionalmente , el mensaje puede rellenarse con datos aleatorios, r. Esto es particularmente útil cuando la información es predecible o de alcance limitado. Los datos aleatorios pueden comprender más de la mitad del mensaj e . c. En 210, la parte A encripta el mensaje m utilizando la encriptación de curva elíptica. El mensaje de cifra c = E (m) se genera consistiendo en las coordenadas x y y de un punto R = kP (este punto se obtiene por multiplicación escalar del número aleatorio k por el punto generador P) y el mensaje multiplicado por la coordenada x del punto T = kQ (el punto obtenido por la multiplicación escalar del número aleatorio k por el punto Q) . En esta modalidad, se utilizan las coordenadas afines. d. En 212, el mensaje de cifra c se comunica a la parte B (el receptor) . Además de pasar la información, el mensaje de cifra c proporciona un desafío que se comunica a la parte B (el receptor) . En algunas modalidades, la parte A puede comunicar adicionalmente credenciales. e. En 214, la parte B desencripta el mensaje de cifra para obtener el mensaje m' y, opcionalmente, valida la información i utilizando las dos representaciones aritméticamente independientes que se incluyeron en el mensaje. En algunas modalidades, la información i se valida adicionalmente contra un conjunto de valores predeterminados. La parte A también puede haber proporcionado credenciales que los autorizan a procesar la información i. En esencia, las credenciales le ayudan a la parte B a determinar el conjunto de valores aceptables de i . Un punto G se calcula por la multiplicación escalar de una clave privada q, y el punto R (incluido en la cifra) . Se observa que T - qR = qkP = kQ. El mensaje m' es recuperado al multiplicar la coordenada x inversa del punto G y la parte numérica del desafío. f. Si el resultado del procesamiento es exitoso, la parte B crea una ficha de validación V en 216, donde V es un punto obtenido por la multiplicación escalar del mensaje m' y el punto T.
El punto V es una ficha de validación de respuesta al desafío c. g. En 218, la ficha de validación de respuesta V se le comunica a la parte A. h. En 220, la parte A, la cual tiene tanto el mensaje m como el punto T, valida la respuesta. La validación verifica la igualdad del punto recibido V y el punto obtenido por una multiplicación de m y el punto T. La Figura 3 es un diagrama de secuencia de un método adicional consistente con algunas modalidades de la invención. Este método utiliza coordenadas proyectivas en la aritmética de curva elíptica. Esta modalidad del proceso requiere recursos computacionales limitados y es adecuada para su uso en un sistema en el cual la parte A con una clave pública es un dispositivo incorporado con recursos muy limitados. El uso de coordenadas proyectivas le permite a la parte A evitar una operación costosa de inversión de campo finito. La inversión se delega a la parte B, la cual puede poseer una mayor potencia de cálculo. Haciendo referencia a la Figura 2, el transmisor 202 (parte A) tiene la información i, junto con los parámetros del sistema de la curva elíptica (los valores a y b, por ejemplo, y un punto generador P) y una clave pública Q del receptor 204 (parte B) . El receptor 204 (parte B) tiene los parámetros del sistema de la curva elíptica (los valores a y b, por ejemplo, y un punto generador P) y una clave privada q. El proceso es el siguiente : a. En 206, la parte A genera los números aleatorios k y r. b. En 208, la parte A transforma la información i en un mensaje m al rellenar con datos aleatorios, r. En la figura, 4 | | ' denota concatenación. El mensaje m se limita al tamaño del campo finito. Esto se realiza en esta modalidad utilizando el prefijo 0x01 en el mensaje. El mensaje incluye dos representaciones, aritméticamente independientes, de la información. c. En 302, la parte A encripta el mensaje m utilizando encriptación de curva elíptica. El mensaje de cifra c = E (m) comprende las coordenadas proyectivas X, Y y Z de un punto R = kP (un punto obtenido por la multiplicación escalar de un número aleatorio k por el punto generador P) y el mensaje m multiplicado por la coordenada x (kQ?X) del punto G = kQ (un punto obtenido por la multiplicación escalar de un número aleatorio k por el punto Q) así como también la coordenada Z del punto G. d. En 212, el mensaje de cifra c se comunica a la parte B (el receptor) . En algunas modalidades, la parte A puede comunicar adicionalmente credenciales . e. En 304, la parte B desencripta el mensaje m' y, opcionalmente , valida la información i utilizando las dos representaciones aritméticamente independientes de la información que fueron incluidas en el mensaje. En algunas modalidades, la información i se valida adicionalmente contra un conjunto de valores predeterminados. La parte A también puede haber proporcionado credenciales que los autorizan a procesar la información i. En esencia, las credenciales le ayudan a la parte B a determinar el conjunto de valores aceptables de i . Un punto G = qkP = kQ se calcula por la multiplicación escalar de la clave privada q de la parte B, y el punto R = kP (que se incluye en la cifra) . El mensaje m' se recupera utilizando aritmética de coordenadas proyectivas o afines. Por ejemplo, la cifra puede multiplicarse por el inverso de la coordenada Z de kQ para entregar la coordenada x (afín) de kQ = kqP y se multiplica después por la coordenada x inversa (afín) del punto G = qkP para entregar el mensaje, m' . f. Si el resultado del procesamiento es exitoso, la parte B crear una ficha de validación V en 216, donde V es un punto obtenido por la multiplicación escala de m' y el punto T. El punto V, en coordenadas afines, es una ficha de validación de respuesta al desafío c. g. En 218, la ficha de validación de respuesta V se comunica a la parte A. h. En 220, la parte A, que tiene tanto el mensaje m como el punto T, valida la respuesta. La validación verifica la igualdad del punto recibido V y el punto obtenido por una multiplicación escalar de m y el punto T. El punto recibido V se encuentra en coordenadas afines, donde el punto calculado por T se encuentra en coordenadas proyectivas. Con objeto de comparar sin inversión, las coordenadas afines x- y y-del punto V se multiplican por la coordenada Z del punto calculado y comparado con las coordenadas proyectivas X- y Y- del punto calculado por mT, respectivamente . Este método de validación reduce los requisitos de procesamiento y recursos del dispositivo al eliminar los pasos matemáticos complejos y el almacenamiento de múltiples claves públicas. El método de validación le permite también al transmisor continuar enviando información hasta que se confirma el acuse de recibo. Algunos de los planteamientos anteriores requieren que el transmisor realice una encriptación de clave pública de un valor aleatorio y la envíe al receptor. Después, el receptor utiliza la clave privada para desencriptar el valor aleatorio y ejecuta una operación de firma sobre ese mensaje y lo devuelve al dispositivo, o devuelve potencialmente sólo el valor aleatorio desencriptado al dispositivo. Estos métodos anteriores requerirían que el dispositivo ejecute al menos dos tipos principales de cálculos matemáticos de campo finito (multiplicación de campo finito e inversión de campo finito) o colocarían los datos privados enviados desde el dispositivo al servidor en el vacío como parte del método de devolución. Al utilizar la ficha de validación junto con la validación por el transmisor, puede alcanzarse el mismo nivel de seguridad con únicamente la multiplicación de punto proyectivo requerida en el transmisor (que no requiere inversión de campo finito) . Este planteamiento protege los datos privados contra filtraciones del sistema. Para dispositivos transmisores de recursos limitados, tales como bloques de control de acceso de hardware o dispositivos de sensor, esto puede ser una mejora significativa en el rendimiento. La Figura 4 es un diagrama que muestra la generación de una cifra c, consistente con algunas modalidades de la invención, para la transmisión y validación de información desde un transmisor hacia un receptor. La cifra 400 incluye un primer elemento 402 que es igual a un producto kP de un primer número aleatorio k (404) con un punto P (406) en una curva elíptica y un segundo elemento 408 igual a un producto m{kQ?x) de un mensaje m (410) con la coordenada x 412 de un punto kQ (414) en la curva elíptica. El punto Q (416) es una clave pública del receptor y es un punto en la curva elíptica. El mensaje m (410) es dependiente de la información o datos 418 a transmitirse. La coordenada x del punto kQ puede ser una coordenada afín o una coordenada proyectiva. Si se utilizan coordenadas proyectivas, como se representa gráficamente en la Figura 4, la cifra 400 incluye también la coordenada proyectiva Z 420 del punto kQ (414) . El mensaje m (410) comienza con una cabecera de mensaje fijo para evitar el sobreflujo, incluye un segundo número aleatorio, r (422) , la coordenada X iP?X (424) y la información i 418 a transmitirse. La coordenada X proyectiva iP?X (424) puede generarse en la parte receptora utilizando el algoritmo idéntico u otras restricciones del sistema de manera tal que la coordenada Z no tenga que transmitirse en el mensaje. En algunas modalidades, el valor proyectivo iP?X puede reemplazarse equivalentemente por la coordenada afín x de iP. El mensaje 410 puede rellenarse, con bits aleatorios adicionales 428 para hacerla de un largo especificado. La Figura 5 es un diagrama que muestra la generación de una ficha de validación V (500) , consistente con algunas modalidades de la invención, para la validación de transferencia de información entre un transmisor (parte A) y un receptor (parte B) . Haciendo referencia a la Figura 5, la cifra 400 se desencripta para obtener un mensaje m' (502) . En el ejemplo mostrado en la Figura 5, se utilizan coordenadas proyectivas. El segundo elemento 408 de la cifra 400 se divide por el tercer elemento 420 (la coordenada Z del producto kQ) a fin de entregar la coordenada x afín 504 del producto m(kQ?X) . Dado Q=qP, mkQ=mkqP. Como es conocido por aquellos expertos en la materia, la operación de división es equivalente a una multiplicación por el inverso multiplicativo. La coordenada afín x 506 del producto qkP (508) se genera al multiplicar el primer elemento 402 de la cifra {kP) por la clave privada, q (510), del receptor. El mensaje m' (502) decodificado de la cifra 400 se encuentra al dividir el cociente de datos cifrados 504 de las porciones segunda 408 y tercera 420 de la cifra por la coordenada x afín del producto qkP (506) . Finalmente, la ficha de validación V (500) se calcula como la multiplicación del mensaje decodificado m' (502) con el producto qkP (506) . La presente invención, como se describe en las modalidades de la presente, puede implementarse utilizando un procesador programado que ejecute instrucciones de programación que se describen ampliamente con anterioridad en forma de diagrama de flujo que puede almacenarse en cualquier medio de almacenamiento electrónico adecuado. Sin embargo, aquellos expertos en la materia observarán que los procesos descritos anteriormente pueden implementarse en cualquier número de variaciones y en muchos idiomas de programación adecuados sin aislarse de la presente invención. Por ejemplo, el orden algunas operaciones llevadas a cabo, frecuentemente puede variar, pueden añadirse operaciones adicionales o pueden eliminarse operaciones sin aislarse de la invención. El atrapado de errores, mejoras y variaciones puede añadirse sin aislarse de la presente invención. Tales variaciones se contemplan y se consideran equivalentes. La presente invención podría implementarse utilizando hardware de propósito especial y/o procesadores dedicados. De manera similar, las computadoras de propósito general, computadoras basadas en microprocesadores, procesadores de señales digitales, microcontroladores , procesadores dedicados, circuitos personalizados, ASICS y/o puede utilizarse una lógica alámbrica dedicada para construir modalidades equivalentes alternativas de la presente invención. Aquellos expertos en la materia observarán que los pasos de programa y datos asociados utilizados para implementar las modalidades descritas con anterioridad pueden implementarse utilizando el almacenamiento de disco asi como también otras formas de almacenamiento, tales como, por ejemplo, dispositivos de memoria de sólo lectura (ROM - Read Only Memory) , dispositivos de memoria de acceso aleatorio (RAM - Random Access Memory) , elementos de almacenamiento óptico, elementos de almacenamiento magnético, elementos de almacenamiento magneto-óptico, memoria flash y/u otras tecnologías de almacenamiento equivalentes sin aislarse de la presente invención. Tales dispositivos de almacenamiento alternativos deben considerarse equivalentes. Aunque la invención se ha descrito en conjunto con modalidades específicas, es evidente que muchas alternativas, modificaciones, permutaciones y variaciones se volverán aparentes para aquellos expertos en la materia en virtud de la descripción anterior. De acuerdo con lo anterior, se pretende que la presente invención abarque tales alternativas, modificaciones y variaciones dentro del alcance de las reivindicaciones anexas.