MXPA00005081A - Un aparato para proporcionar un ambiente de procesamiento seguro - Google Patents

Un aparato para proporcionar un ambiente de procesamiento seguro

Info

Publication number
MXPA00005081A
MXPA00005081A MXPA/A/2000/005081A MXPA00005081A MXPA00005081A MX PA00005081 A MXPA00005081 A MX PA00005081A MX PA00005081 A MXPA00005081 A MX PA00005081A MX PA00005081 A MXPA00005081 A MX PA00005081A
Authority
MX
Mexico
Prior art keywords
information
memory
key
processor
encrypted
Prior art date
Application number
MXPA/A/2000/005081A
Other languages
English (en)
Inventor
Dcassagnol Robert
M Dillon Douglas
S Kloper David
J Weber Sandra
E Bautz Brandon
Original Assignee
Hughes Electronics Corporation
Filing date
Publication date
Application filed by Hughes Electronics Corporation filed Critical Hughes Electronics Corporation
Publication of MXPA00005081A publication Critical patent/MXPA00005081A/es

Links

Abstract

Se describe un aparato para proporcionar un ambiente de procesamiento seguro. En una modalidad, el aparato incluye una memoria de lectura / escritura para almacenar información encriptada o codificada. También incluye un procesador, un cifrador o codificador y un autentificador. El cifrador estáen comunicación con la memoria de lectura / escritura para recibir información encriptada de la misma y estáconfigurado para desencriptar o decodificar la información encriptada o codificada en información desencriptada o decodificada a ser regresada a la memoria para su uso posterior por el procesador. El autentificador autentifica la información desencriptada antes de ser utilizada por el procesador y reautentifica la información antes de la reautentificación por el cifrador o codificador.

Description

UN APARATO PARA PROPORCIONAR UN AMBIENTE DE PROCESAMIENTO SEGURO CAMPO DE LA INVENCIÓN La invención se relaciona de manera general con la seguridad en dispositivos programados y, de manera más particular, con un aparato para proporcionar un "ambiente seguro para procesffí datos confidenciales y/o pasos programados confidenclaJ.es tales como programas y sistemas de programación y similares.
ANTECEDENTES DE IA INVENCIÓN El valor financiero de datos y o Instrucciones programarlas (por ejemplo, programas y sistemas de programación) con frecuencia dependen de su disponibilidad general al público interesado. Por ejemplo, si la información en forma de datos o instrucciones programadas se vuelve disponible libre de cargo en la Internet, el valor comercial de esa información rápidamente caerá a cero puesto que poca gente pagará por recibir algo que puede obtenerse fácilmente gratis. De este modo, el deseo de mantener el secreto de datos y/o instrucciones programadas con respecto a todos excepto los compradores que paguen por la información secreta ha sido ^conocido desde hace mucho tiempo.
Existen muchos contextos en los cuales el concepto de derivar el valor de la información por el acceso limitado a ésta ha sido explotado. Por ejemplo, las redes de transmisión de acceso condicional tales como las redes de televisión por cable y, más recientemente, las redes de transmisión directa por satélite se basan en la premisa de limitar el acceso a la información transmitida a los abonados que paguen. Aún más recientemente, la idea de limitar el acceso a datos transmitidos se ha expandido al contexto de redes de computadoras por medio del producto DirecPCMR de Hughes Network Systems' . El producto DirecPC™1 transmite la información solicitada a un dispositivo de cómputo solicitante (típicamente, una computadora personal) via un satélite como medio para entregar zLxrformación de la Internet en forma expedita. La mayoría de tales sistemas de transmisión emplean una o más técnicas criptográficas para controlar el acceso a la información transmitida. Por ejemplo, la mayoría de tales sistemas emplean una o más claves para encriptar o codificar los datos transmitidos de acuerdo con un algoritmo matemático que hace muy difícil desencriptar o decodificar los datos en un intervalo de tiempo razonable sin el conocimiento de la clave utilizada para encriptar o decodificar los datos. Una explicación de muchas de tales técnicas criptográficas incluyendo una explicación del algoritmo Estándar de Encriptación o Codificación de Datos (DES) es frecuentemente empleado para encriptar' o codificar información transmitida está contenida en Schneier, Applied Cryptography, (Segunda Edición 1996) , la cual se incorpora aqui como referencia en su totalidad. La necesidad de proteger el secreto de la información no se limita al contexto de transmisión. Existen muchas aplicaciones donde es importante, por ejemplo, desde un punto de vista comercial mantener el sabreto de información mientras es procesada localmente por una computadora personal. A manera de ejemplo, sin limitación, en algunas aplicaciones es deseable permitir el procesamiento de datos secretos y mantener a la vez el secreto de los datos al mundo exterior. A manera de otro ejemplo, en algunos casos es deseable permitir la ejecución secreta de instrucciones programadas (por ejemplo programas y sistemas de programación) dentro de un" procesador sin permitir el acceso a instrucciones desencriptadas o decodificadas encima del procesador. Han sido desarrollados varios dispositivos para mantener el secreto de la información. Sin embargo, puesto que la información secreta protegida por esos dispositivos con frecuencia tiene valor comercial, se ha desarrollado una subcultura de individuos comúnmente conocidos como "sabelotodo o entrometidos" (hackers) . Esos individuos pasan una considerable cantidad de tiempo intentando frustrar ~ o burlar las medidas de esos dispositivos en un esfuerzo por usurpar el valor comercial de la información secreta. Los sabelotodo o entrometidos han tenido varios niveles de éxito en sus esfuerzos. En consecuencia, existe la necesidad de un aparato mejorado, más flexible, para proporcionar un ambiente seguro para procesar información que logre un mayor nivel de seguridad contra los sabelotodo o entrometidos que los dispositivos conocidos. "Además, existe la necesidad de un aparato tal que supere las limitaciones de memoria inherentes a los dispositivos de seguridad y cuyos programas y sistemas de programación puedan ser actualizados en el campo. Es bien sabida -la suposición de la práctica criptográfica aceptada que el secreto debe residir totalmente en las claves del sistema. En otras palabras, para que un dispositivo sea considerado seguro, un atacante que tenga acceso a toda la información acerca del sistema excepto las claves debe aún ser incapaz de desencriptar o decodificar la información encriptada o codificada en un periodo de tiempo razonable. De este modo, el secreto del material clave es de importancia primordial en un dispositivo para proporcionar un ambiente seguro. Hasta este punto, los dispositivos para encriptar, desencriptar y/o mantener el secreto de información típicamente incluyen una memoria segura de algún tipo para almacenar material clave y otros datos posiblemente sensible. Para controlar el acceso a ese material clave, con frecuencia es necesario limitar el acceso a la memoria segura a componentes de programas y sistemas de programación y/o componentes físicos de computación confiables. De manera más específica, con frecuencia es necesario poner restricciones sobre cuándo, quién y bajo que circunstancias la memoria que almacena el material clave puede ser direccionada. ün problema con el acceso limitado a la memoria es la capacidad de prueba. Otro problema es el acceso limitado a las unidades desplegadas en el campo permitiendo aún a la vez la programación inicial en la fábrica. Para verificar que la memoria esté funcionando apropiadamente antes de llevar un dispositivo al campo, con frecuencia es necesario tener acceso total por lectura/escritura a éste. Además, tal acceso debe ser proporcionado típicamente después de que un dispositivo este completa o casi completamente construido. Como resultado, tales dispositivos incluyen un modo de prueba en ellos, de modo que después que ocurra una cierta condición o evento, el dispositivo asuma su modo de prueba y permita el acceso total por lectura/escritura a la memoria. Si un sabelotodo o entrometido puede burlar un dispositivo que contenga material clave entrando al modo de prueba, el sabelotodo o entrometido puede obtener acceso total potencial al material clave almacenado comprometiendo por lo tanto de manera total la seguridad del dispositivo. En algunos métodos de la técnica anterior, uno o más bits de modo almacenados en la memoria, o en un dispositivo antifusión, o similar, definen si la memoria contiene datos confidenciales y/o si la memoria está en el modo de prueba. Estos bits de modo pueden ser implementados como una suma de verificación simple sobre los datos en la memoria. En otras palabras, los bits de modo pueden ser ajustados de modo que sean iguales a algunas funciones matemáticas de algunos o todos los datos almacenados en la memoria. Sin importar cual método tradicional para deJzp n i r_os bits de modo se ha empleado, si un sabelotodo o entrometido cambia de estado de los bits de modo, el sabelotodo o entrometido puede potencialmente hacer que la memora se desbloquee al modo de prueba comprometiendo por lo tanto el material clave que contiene. De este modo, es deseable proporcionar un método y un aparato mejorado para determinar si una memoria contiene datos confidenciales que no dependan de los bits de modo almacenados en esa memoria o "sobre un -valor de suma y de verificación almacenado en la memoria.
BREVE DESCRIPCIÓN DE LA INVENCIÓN De acuerdo con un aspecto de la invención, se proporciona un aparato para proporcionar un ambiente de procesamiento seguro. El aparato incluye una memoria de lectura/escritura para almacenar información;- un primer procesador que coopera con la memoria de lectura/escritura para leer información de la misma y escribir información en la misma; y un cifrador o codificador en comunicación con la memoria de lectura/escritura. El cifrador o codificador está configurado para encriptar y desencriptar selectivamente información encriptada en información desencriptada y paira entregar la información desencriptada a la memoria de lectura/escritura para su uso posterior por el primer procesador. El aparato está provisto además con un autentificador para autentificar la información desencriptada antes de ser utilizada por el primer procesador. En algunas modalidades, el autentificador reautentifica la información desencriptada recibida de la memoria de lectura/escritura, y el cifrador o codificador está configurado para encriptar selectivamente la información desencríptada, reautentificada en información reencriptada . En tales modalidades, el cifrador puede opcionalmente regresar la información reencriptada a la memoria de lectura/escritura para su exportación posterior a un dispositivo de almacenamiento o puede, opcionalmente, exportar directamente la información reencriptada. También en tales modalidades, el cifrador preferiblemente reencripta la información desencriptada, reautentificada la información, de modo que esta difiera de su forma encriptada original para enmascarar la información de la modificación. En tales modalidades, el cifrador emplea el ciclaje clave y/o ciclaje de la clave de blanqueo para enmascarar la información de la modificación. En algunas modalidades, los datos de autentifícación para reautentificar la información desencriptada antes de la reencriptaciótr se almacenan en la memoria de lectura/escritura para su uso posterior en la autentificación de la información desencriptada. En algunas modalidades, el primer procesador tiene un modo de operación del núcleo y un modo de operación de usuario, y el modo de núcleo y el modo del usuario definen células de seguridad separadas. En tales modalidades, el primer procesador preferiblemente ejecuta programas y sistemas de programación no seguros en el modo de operación de usuario y programas y sistemas de programación en el modo de operación de núcleo. En algunas modalidades, el aparato está provisto con un segundo procesador. El segundo procesador está en comunicación con el cifrador y con la memoria de lectura/escritura para iniciar por lo tanto de manera selectiva la desencriptación y reencriptación de la información almacenada en la memoria de lectura/escritura. En algunas de tales modalidades, el cifrador comprende el autentificador. En algunas modalidades, el aparato está provisto además con una memoria no volátil y un circuito lógico para controlar el acceso a los datos contenidos en la memoria no volátil, donde el circuito lógico tiene acceso selectivamente a la memoria no volátil para determinar si los datos contenidos en la memoria no volátil comprenden datos ~~confidenciales analizando una propiedad inherente a los datos a los que tiene acceso. En algunas modalidades, el circuito lógico determina si los datos contenidos en la memoria no volátil comprenden datos confidenciales identificando bloques de datos en los datos a los que se tiene acceso que tienen una característica predeterminada, contando los bloques de datos identificados, y comparando el conteo con un valor umbral. En algunas de tales modalidades, cada uno de los bloques de datos puede comprender un bit y las características predeterminadas pueden comprender un estado lógico predefinido. De manera alternativa, cada uno de los bloques de datos puede comprender una pluralidad de bits, y las características predeterminadas pueden comprender un valor binario que caiga dentro de un intervalo de valores binarios. En algunas modalidades que emplean una memoria no volátil como se describió anteriormente, se proporciona un circuito de aislamiento de claves conectando directamente el circuito lógico al cifrador. En algunas de tales modalidades, la memoria no volátil almacena una clave, y el circuito de aislamiento de claves entrega la clave al cifrador. En cualquiera de las modalidades anteriores, el circuito lógico, el circuito de aislamiento de claves y el cifrador preferiblemente define un sistema cerrado. En algunas modalidades, la memoria no volátil, el primer procesador, la memoria de lectura/escritura, y el cifrador están incluidos en un circuito integrado. En tales modalidades, el circuito integrado incluye pernos para conectar el aparato a dispositivos externos, y el aparato comprende además un circuito silenciador para desactivar de manera selectiva los pernos para evitar que se revele información sensible fuera del ambiente seguro, y/o el aparato comprende además un circuito guardián adaptado para verificar la manipulación indebida del circuito integrado. En algunas modalidades, el aparato incluye una unidad de administración de la memoria que coopera con el primer procesador para mantener una pluralidad de células de seguridad. En algunas modalidades, el cifrador comprende un criptomódulo . En cualquiera de las modalidades anteriores, la autentificación puede efectuarse autentificando la información encriptada antes de la desencriptación. En cualquiera de las modalidades anteriores, la información encriptada puede comprender instrucciones de procesador encriptadas y/o datos encriptados. En cualquiera de las modalidades anteriores, la inlormación encriptada puede ser segmentada en secciones. En tales modalidades, los segmentos son preferiblemente encriptados y autentificados de manera independiente. De acuerdo con otro aspecto de la invención, se proporciona un circuito integrado para "proporcionar un ambiente de procesamiento seguro para utilizarse con una memoria externa. El aparato incluye una memoria _ volátil que tiene una capacidad de almacenamiento la cual es menor que la capacidad de almacenamiento de la memoria externa. El aparato comprende además medios de importación/exportación para importar y exportar de manera selectiva información encriptada entre la memoria externa y la memoria volátil; y medios cifradores para desecriptar información encriptada recibida de la memoria volátil en información desencriptada dentro del ambiente seguro y para encriptar la información desencriptada nuevamente en información encriptada dentro del ambiente seguro. Además, el aparato incluye un procesador para procesar la información desencriptada dentro de un ambiente seguro. El procesador coopera con los medios de importación/exportación para importar y exportar selectivamente información desencriptada de la memoria externa a la memoria volátil y viceversa para evitar que se exceda a segunda capacidad de almacenamiento. En algunas modalidades, los medios cifradores encriptan información de modo que la información encriptada que corresponde a la información desencriptada tiene una primera forma cuando se importa de una memoria externa y una segunda forma diferente a la primera forma cuándo se exporta a la memoria externa aún cuando la información desencriptada correspondiente no cambie. En algunas de tales modalidades, los medios cifradores desencriptan información desencriptada utilizando una primera clave de blanqueo y encriptan información desencriptada utilizando una segunda clave de blanqueo diferente a la primera clave de blanqueo. En algunas de tales modalidades, el aparato está provisto con un generador de números pseudoaleatorios criptográficamente fuerte que genera la segunda clave de blanqueo. En algunas modalidades, el aparato incluye medios para autentificar la información desencríptada dentro del ambiente seguro. En algunas de tales modalidades, los medios de autentificación autentifican la información desencriptada después de la importación de la memoria externa y reautentificar la información desencriptada antes de la encriptación y exportación a la memoria externa. De acuerdo con un aspecto de la invención, se proporciona un método para verificar la manipulación indebida de un circuito integrado para efectuar operaciones seguras. El método comprende los pasos de: determinar un evento; ejecutar una autoprueba incorporado sobre al _menos un elemento del circuito integrado para determinar si ha ocurrido una manipulación indebida; y si la autoprueba incorporada indica que ha ocurrido una manipulación indebida, colocar una restricción sobre al menos una operación del circuito integrado. En algunas modalidades, el método también incluye los pasos de: mantener un procesador asociado con el circuito integrado en un estado de reajuste de modo que no pueda tenerse acceso a una memoria predefinida que almacene material clave; si al menos un elemento pasa la autoprueba incorporada, liberando al procesador del estado de reajuste; y si al menos un elemento no pasa la autoprueba incorporada, manteniendo el procesador en el estado de reajuste. En algunas de tales modalidades, al menos un elemento comprende la memoria predeterminada, y/o al menos un elemento comprende un circuito lógico. En cualquiera de las modalidades anteriores, el evento detectado puede comprender un evento de reajuste. Otras características y ventajas son inherentes al aparato reclamado y descrito o serán evidentes a aquellos expertos en la técnica a partir de la siguiente descripción detallada y sus dibujos acompañantes.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La FIGURA 1 es una ilustración de un aparato construido de acuerdo con las enseñanzas de la invención en un ambiente de uso posible.
La FIGURA 2 es una ilustración esquemática del aparato de la FIGURA 1. La FIGURA 3 es una ilustración esquemática más detallada del aparato de las FIGURAS 1 y 2. La FIGURA 4 es una ilustración esquemática de la arquitectura de los programas y "sistemas de programación empleados en el aparato. La FIGURA 5 es una ilustración esquemática de un sistema ejemplar para programar el aparato. La FIGURA 6 es un diagrama en escalera que ilustra la programación de la EEPROM del aparato. La FIGURA 7 es un diagrama de flujo que ilustra la operación de arranque del aparato. La FIGURA 8 es un diagrama de flujo que ilustra el proceso de interrupción empleado por el aparato. La FIGURA 9 es un diagrama de flujo que ilustra el proceso utilizado por el aparato para transferir applets entre una memoria externa y la DMEM.
~ DESCRIPCIÓN DE LAS MODALIDADES PREFERIDAS Un aparato 10 construido de acuerdo con las enseñanzas de la invención se ilustra esquemáticamente en la FIGURA 1 en un posible ambiente de uso, a saber, sobre un módulo DirecPCMR 12 para utilizarse en una computadora personal "(no mostrada) . Como se explica con detalle más adelante, el aparato 10 está construido para proporcionar un ambiente seguro para procesar información sensible. Como se utiliza a través de esta descripción y en las reivindicaciones anexas, el término "información" se refiere a datos, instrucciones programadas (por ejemplo, programas y sistemas de programación, instrucciones fijas), o ambas. Aunque el aparato 10 es capaz de utilizarse en el producto DirecPCMR, los expertos en la técnica apreciarán que el aparato 10 no se limita al uso en ningún ambiente específico o con ninguna aplicación específica. Por el contrario, sin apartarse del alcance o espíritu de la invención el aparato ilustrado 10 puede ser utilizado en cualquier aplicación o ambiente que se beneficie de la seguridad de procesamiento mejorada que proporciona. Por ejemplo, será especialmente ventajoso en aplicaciones de tarjetas inteligentes. Además, aunque el aparato 10 se ilustró en la FIGURA 1 como si hubiese sido implementado como un circuito integrado de aplicación específica (ASIC) , los expertos en la técnica fácilmente apreciarán que el aparato 10 no necesita ser construido como un circuito integrado. Como se explica más adelante, el aparato ilustrado 10 está adaptado para proporcionar un ambiente seguro en el cual puede ser desencriptada, procesada y reencriptada información sensible sin exponer el contenido de la información sensible fuera del aparato 1Q. (Como se utiliza aquí "desencriptada" significa que se removió al menos una capa de la encriptación. Como será apreciado por aquellos expertos en la técnica, la "información desencriptada" como se utiliza aquí, puede opcionalmente aún estar encriptada, pero estará a al menos un paso más cerca de su forma completamente no éncriptada. Por ejemplo, puede ser utilizado el ambiente VersaCrypt para importar otros sistemas criptográficos tales como datos desencriptados por RSA que están encriptados o en el proceso de ser desencriptados de acuerdo con los otros sistemas criptográficos) . En un aspecto, el aparato ilustrado 10 logra esta seguridad asegurando estrictamente que la información sensible esté siempre encriptada cuando se exponga fuera del ambiente seguro. En todos los momentos cuando la información sensible desencriptada está disponible en el aparato 10, los medios de seguridad son forzados a prevenir el acceso ~al aparato 10 por dispositivos externos . Por supuesto, en algunas aplicaciones es deseable exportar la información desencriptada fuera del aparato 10 manteniendo a la vez el secreto de los procesos y las claves utilizadas para desencriptar la información. Por ejemplo, en una aplicación de regulación de programas y sistemas de programación utilizados para regular el acceso a una base de datos, sería deseable proporcionar el contenido desencriptado de la base de datos a usuarios autorizados una vez que han sido cargado apropiadamente . En tales aplicaciones, el aparato 10 proporciona un ambiente seguro para "desencpptar los datos que ocultan el material clave empleado, y los procesos efectuados durante la desencriptación. Aunque el aparato ilustrado 10 es muy valioso en aplicaciones de acceso condicional a datos tales como un sistema de transmisión de televisión desabonado, todas las capacidades del aparato 10 son utilizadas de manera más completa en aplicaciones de acceso condicional de programas y sistemas de programación. En tales aplicaciones, el aparato ilustrado 10 puede desencriptar, ejecutar y reencriptar programas y sistemas de programación (o instrucciones fijas) sensibles sin exponer las instrucciones desencriptadas fuera del ambiente seguro. Los programas y sistemas de programación (o instrucciones fijas) encriptados pueden ser opcionalmente almacenados en el aparato 10, o, debido a restricciones de memoria, pueden ser almacenados fuera del aparato 10 e importados inactivamente (a sea colectivamente o en segmentos) al aparato 10 cuando sea necesario. En cualquier caso, puesto que, como se explica más adelante, el aparato ilustrado 10 está provisto con capacidad de procesamiento a bordo significativa, la ejecución de los programas y sistemas de programación (o instrucciones fijas) desencriptados puede ocurrir completamente en el ambiente seguro. Como resultado, los programas y sistemas de programación (o instrucciones fijas sensibles) no pueden ser cambiados o pirateados para ser utilizados por una entidad no autorizada o para inducir una operación incómoda. Aunque la ejecución de programas y sistemas de programación (o instrucciones fijas) encriptados puede hacer que el aparato 10 envíe información a un dispositivo externo (por ejemplo, un monitor, una impresora, un dispositivo de almacenamiento, etc.) en una forma donde pueda ser leída por un usuario, los programas y sistemas de programación que generan la información de salida comúnmente se expondrían fuera del ambiente seguro proporcionado por el aparato 10 (ausente, por supuesto, de instrucciones en los programas y sistemas de programación (o instrucciones fijas) ejecutados para exportar las instrucciones en forma desencriptada) . De este modo, la seguridad de los programas y sistemas de programación (o instrucciones fijas) es siempre mantenida por el aparato 10 ilustrado. Como se explica más adelante, un resultado valioso de este aspecto del aparato ilustrado 10 es la capacidad de implementar la regulación de los programas y sistemas de programación (o instrucciones fijas) donde un usuario con licencia para utilizar los programas y sistemas de programación (o instrucciones fijas) puede cargarlos sobre una lase de uso que está en clave, por ejemplo, con la cantidad de tiempo que sean realmente utilizados los programas y sistemas de programación (o instrucciones fijas) . Por ejemplo, el aparato 10 puede ser adaptado para verificar la cantidad de tiempo que cualquier porción de los programas y sistemas de programación (o instrucciones fijas) objeto sean mantenido en forma desencriptada. Los datos recolectados por esta verificación pueden ser empleados para evaluar las tasas de licencia para el uso de programas y sistemas de programación (o instrucciones fijas) . Este método para autorizar el uso de programas y sistemas de programación (o instrucciones fijas) contrasta de manera aguda con los métodos tradicionales donde, se carga una tasa de licencia una vez, sin actualización. Para el propósito de almacenar instrucciones programadas que definen algunas de las operaciones del aparato 10 (es decir el núcleo seguro) el aparato 10 está provisto con una memoria no volátil 14 (Figura 2) . El núcleo seguro está a cargo de la administración de recursos dentro del aparato 10. Esto impone muchas de las limitaciones de seguridad discutidas más adelante. Aunque el código almacenado en la _ memoria no volátil 14 preferiblemente no está encriptado, los expertos en la técnica apreciarán qu " la información encriptada (por ejemplo, datos o instrucciones programadas) puede ser almacenada en la memoria no volátil 14 sin apartarse del alcance o espíritu de la invención. Aunque se apreciará que la memoria no volátil 14 puede ser implementada en muchas formas sin apartarse de la invención, en la modalidad actualmente preferida la memoria 14 es implementada por una memoria de solo lectura (ROM) que almacena instrucciones programadas. Como se explica más adelante, el aparato 10 ejecuta programas y sistemas de programación seguros los cuales están preferiblemente segmentados en applets VersaCrypt los cuales se encriptan individualmente utilizando una clave triple, DES-CBC triple con blanqueo. Para el propósito de procesar información y controlar la operación del aparato 10, el aparato 10 está provisto con un procesador 16 (véase la Figura 2) . Como se explica con mayor detalle más adelante, una función del procesador 16 es imponer al menos dos células de seguridad. Una primera de las células de seguridad, a la cual se hace referencia aquí como la célula de modo de núcleo, es preferiblemente impuesta cuando se está teniendo acceso a información confidencial sensible procesada, o vuelta disponible sobre un conductor colectivo interno del aparato 10. La segunda célula de seguridad, a la cual se hace referencia aquí como la célula de modo de usuario, se impone cuando no se permite el acceso a datos sensibles. Cuando el modo de núcleo está en efecto, el procesador 16 no coloca restricciones sobre el acceso a los componentes físicos de computación y los recursos de los programas y sistemas de programación dentro del aparato 10. Como se explica más adelante, también evita de manera preferible que los pernos externos del aparato 10 revelen información sensible que indique las operaciones que están siendo efectuadas por el aparato 10 y/o la información que está siendo procesada por el aparato 10. Cuando es impuesto el modo de usuario, el procesador 16 coloca un mayor nivel de restricciones sobre las operaciones- del aparato 10, pero no coloca restricciones sobre cuales operaciones son externamente visibles. Sin embargo, como se explica más adelante, ciertas restricciones impuestas sobre los componentes físicos de computación son preferiblemente mantenidas en ambas células de seguridad. Para almacenar temporalmente información a ser procesada por el aparato 10, el aparato 10 está provista además con una memoria de lectura/escritura volátil 18. La memoria de lectura/escritura 18 es direccionable por el procesador 16 de modo que el procesador 16 puede leer información contenido en la memoria 18 y escribir información a la memoria 18 según sea necesario. Como se explica más adelante, en operación, la información encriptada a ser procesada por el aparato 10 es escrita primero a la memoria lectura/escritura 18. De este modo, en una capacidad, la memoria de lectura/escritura 18 sirve como un área de almacenamiento para información encriptada . Para efectuar las funciones de cifrado, el aparato 10 está provisto con medio cifradores para desencriptar información encriptada en información desencriptada y para reencriptar información desencriptada en información encriptada. Ambas de esas funciones son efectuadas dentro del ambiente seguro. Como será apreciado por los expertos en la técnica los medios cifradores pueden ser implementados de muchas maneras diferentes sin apartarse del alcance o espíritu de la invención. Por ejemplo, los medios cifradores pueden ser implementados por un cifrador o codificador 20, tal como un circuito dedicado de los componentes físicos de computación o un procesador que ejecute programas y sistemas de programación o instrucciones fijas. Además, un experto en la técnica apreciará que el cifrador 20 puede ser adaptado para efectuar una amplia variedad de técnicas y/o algoritmos criptográficos bien conocidos sin apartarse del alcance o espíritu de la invención. En la modalidad actualmente preferida, el cifrador 20 es implementado por un circuito dedicado a los componentes físicos de computación 20 al que se hace referencia aquí como criptomódulo el cual es capaz de efectuar ambas de (1) la encriptación y desencriptación de triple clave, triple DES/ECB (encriptación/desencriptación de triple clave, triple Encriptación de Datos Estándar/Modo del Libro de Código Electrónico) , (2) encriptación y desencriptación de triple clave, CBS externo de triple DES (triple clave, triple Encriptación de Datos Estándar con Encadenamiento del Bloque del Cifrador externo) , y (3) desmezclado de DVB (Transmisión de Video Digital) dependiendo de los requerimientos de la aplicación. Como se muestra en la Figura 2, el cifrador 20 está en comunicación con la memoria de lectura/escritura 18. En operación, la información encriptada escrita a la memoria de lectura/escritura 18 es transferida al cifrador 20 para su desencriptación según sea necesario. La"" información desencriptada es entonces escrita del cifrador 20 a la memoria de lectura/escritura 18 para su uso posterior por el procesador 16.
De manera significativa, para prevenir que los sabelotodo o entrometidos modifiquen el código o datos sensibles en sus propios extremos, al procesador 16 no se le permite procesar información que haya sido desencriptada por el cifrador 20 hasta que la información desencriptada haya sido identificada. Hasta este punto, el aparato 10 está provisto con un auntentificador 22. Aunque los expertos en la técnica apreciarán que el autentificador 22 podría emplear cualquiera de un gran número de algoritmos de autentificación para autentificar la información desencriptada, en la modalidad preferida, el autentificador efectúa un algoritmo CBC-MAC (Código de Autentificación de Mensajes de Cadena de Bloques del Cifrador) que emplea una clave secreta para autentificar toda la información desencriptada. Como será apreciado por aquellos expertos en la técnica, tal autentificación requiere el conocimiento de un valor MAC esperado por cada sección de la información encriptada que debe ser autentificada por separado. Como se explicará más adelante, en la modalidad preferida, los valores MAC requeridos son importados a la memoria de lectura/escritura 18 al arrancar, aunque podrían ser empleados otros esquemas de tiempo de carga sin apartarse del alcance o espíritu de la invención. El autentíficador utiliza los valores MAC de la memoria 18 para efectuar la autentíficación CBC-MAC sobre toda la información desencriptada antes de su uso por el procesador 16. El contenido de la memoria de lectura/escritura 18 puede haber sido actualizado por el procesador 16 o por otros medios, en el curso de la ejecución del applets VersaCrypt. De manera significativa, si la información desencriptada va a ser reencriptada y exportada (como se explica más adelante) el autentificador 22 reautentifica la información desencriptada actualmente residente en la memoria de lectura/escritura 18 desarrollando un nuevo valor CBC-MAC para ese bloque de información. El nuevo valor CBC-MAC es escrito a la memoria de lectura/escritura 18 para su uso posterior para autentificar el bloque de información objeto si se volviera necesario desencriptar y reutilizar esa información en el futuro. La reautentificación es necesaria debido a que, al menos en algunos casos, el procesador 16 cambiará el contenido de la información desencriptada durante el procesamiento. Puesto que cualquier cambio en el contenido de la información desencriptada (con mucha probabilidad) hará que el bloque de información tenga un valor CBC-MAC diferente, a menos que el valor CBC-MAC sea actualizado a través de la reautentificación, el autentificador 22 no podrá autentificar la información objeto si se requiere recuperar información actualizada en el futuro. Como será apreciado por aquéllos expertos en la técnica, existen muchas formas posibles de verificar que la versión autentificada sea en efecto la versión más recientemente exportada. Puede ser utilizado cualquier otro método de verificación sin apartarse del alcance o espíritu de la invención. Después de la reautentificación, el cifrador 20 reencripta la información desencriptada, reautentificada en la memoria de lectura/escritura 18 en información reencriptada . Como será apreciado por los expertos en la técnica, en muchas aplicaciones la cantidad de información encriptada a ser procesada por el aparato 10 excederá la capacidad de la memoria interna del aparato 10. Para permitir que el aparato 10 opere en tales circunstancias, el aparato 10 está provisto con medios de importación/exportación para importar y exportar selectivamente información encriptada entre un dispositivo externo tal como la memoria 24 y la memoria de lectura /escritura 18. Los expertos en la técnica apreciarán, sin embargo, que la información encriptada podría ser importada y exportada sobre un conductor selectivo interno en el sistema, sobre una conexión de red Lan o Wan, a una unidad de disco duro, u otro medio de almacenamiento o dispositivo de comunicaciones sin apartarse del alcance o espíritu de la invención. La capacidad de almacenamiento de la memoria externa 24 preferiblemente excede la capacidad de almacenamiento de la memoria de lectura/escritura 18. Los medios de importación/exportación cooperan con el procesador 16 para importar bloques de información encriptados de la memoria externa 24 sobre una base según sea necesario. Una vez importada a la memoria de lectura/escritura 18, la información encriptada es desencriptada por el cifrador 20 y autentificada por el autentificador 22 como se explicó anteriormente. El procesador 16 puede procesar entonces la información desencriptada. Cuando el procesador 16 es finalizado con el bloque de información (al menos para un futuro cercano), la información desencriptada (con cualesquier cambios de procesamiento que fuesen efectuados) es reautentificada por el autentificador 22, reencriptada por el cifrador 20 y exportada a la memoria externa 24 vía los medios de importación/exportación. Aunque los expertos en la técnica apreciarán que los medios de importación/exportación pueden ser implementados de muchas maneras sin apartarse del alcance o espíritu de la invención, en la modalidad ilustrada se implementaron por medio de un conductor colectivo que tiene una o más conexiones externas. Como será apreciado por los expertos en la técnica, en aplicaciones donde la información encriptada es almacenada en una memoria externa 24, a menos que se tomen precauciones, los sabelotodo o entrometidos serían capaces de discernir información acerca de cuáles bloques están modificados y cuando aquéllos bloques están modificados, y esta información podría ser utilizada en ataques estadísticos. Tal información podría ayudar potencialmente a los sabelotodo o entrometidos a intentar robar o piratear la información encriptada. Para evitar este resultado, el cifrador 20 del aparato 10 está preferiblemente adaptado para efectuar el ciclaje de la clave o el blanqueo de la_ clave. En esencia, el blanqueo efectúa una operación matemática (tal como una operación or (o) exclusiva) para combinar una clave de blanqueo con un bloque de información para, en efecto, reforzar aún más el material clave. El proceso de blanqueo puede ser efectuado sobre un bloque de información encriptada y el bloque de información desencriptada correspondiente (es decir, que la encriptación ocurre tanto antes como después) . Un beneficio de utilizar esta técnica en el aparato ilustrado 10 es que los bloques de información encriptados siempre se verán diferentes cuando sean exportados (de secuencia de exportación/importación previa) sin importar si el contenido de la información desencriptada ha cambiado. En otras palabras, en el aparato ilustrado 10, el cifrador 20 reencripta la información desencriptada, reautentificada, de modo que difiere de su forma encriptada original para enmascarar por lo tanto la información de la modificación o si el contenido de la información desencriptada fue modificado mientras sea proporcionado un ambiente seguro por el aparato 10. De este modo, el cifrador 20 encripta información de modo que la información encriptada que corresponde a la información desencriptada tiene una primera forma cuando es importada de la memoria externa 24 y una segunda forma la cual es diferente a la primera forma cuando es exportada a la memoria externa 24, aún cuándo la información desencriptada correspondiente no haya cambiado. Debido a esta técnica se "le niega a un sabelotodo o entrometido la posibilidad de saber como atacar un texto plano cuando el texto plano no es conocido, se le niega la posibilidad de saber como atacar un texto cifrado dado que el texto cifrado no se conoce, se le niega la posibilidad de un ataque de texto plano elegido adaptado dado que se le niega el control del texto plano, y un sabelotodo o entrometido es capaz de montar un ataque estadístico contra la clave de blanqueo puesto que esta cambió con cada operación de exportación, y de modo que tiene un tiempo de vida suficientemente corto. Por supuesto, pueden ser utilizados otros métodos hasta este punto incluyendo, por ejemplo, el ciclaje de la clave de las claves DES, o transformaciones de paquete . Para asegurar- que el efecto de blanqueo esté presente por cada operación de importación/exportación de manera sustancial efectuada sobre un bloque de información, el cifrador 20 está adaptado para efectuar el ciclaje de la clave con respecto a la clave de blanqueo. De manera más específica, el cifrador 20 está arreglado para utilizar una nueva clave de blanqueo por cada sección de información que encripte. De este modo, cuando un bloque previamente exportado de información encriptada sea importado de la memoria externa 24, la clave de blanqueo utilizada en el ciclo de importación /exportación previo es utilizada por el cifrador 20 en el proceso de desencriptación. Entonces, cuando ese mismo bloque de información va a ser exportado, el cifrador 20 utiliza una nueva clave de blanqueo para ejecutar la porción de blanqueo del proceso de encriptación. Como será apreciado por los expertos en la técnica, para desencriptar de manera eficiente un bloque de información que ha sido blanqueado con una clave de blanqueo, el cifrador 20 debe ser provisto con ia clave de blanqueo. Puesto que se utiliza de manera preferible una nueva clave de blanqueo por cada bloque de información encriptada exportado, el almacenamiento de las claves de blanqueo internamente agotaría rápidamente los recursos de la memoria del aparato 10. Para evitar este resultado, en la modalidad preferida actualmente se escribe una versión encriptada de la clave de blanqueo en un lugar predeterminado en el bloque de información encriptado, blanqueado, correspondiente y, de este modo, se exporta y almacena con el bloque de información blanqueado, encriptado en la memoria externa 24. De este modo, cuando un bloque de información encriptada, es importado, el cifrador 20 recupera la clave de blanqueo del lugar predeterminado conocido en el bloque y utiliza la clave de blanqueo en el proceso de desencriptación. Puesto que la clave de blanqueo encriptada reside dentro del bloque, es explícitamente cubierta por la autentíficación con el resto del bloque. Aunque en la modalidad ilustrada las claves de blanqueo están almacenadas externamente al aparato 10 para preservar los recursos de la memoria, los expertos en la técnica apreciarán que puede tenerse un nivel de seguridad mayor almacenando las claves de blanqueo internamente al aparato 10 de manera que los mapas de las claves de blanqueo almacenadas sean bloques de información exportados (como se hace con la información de autentificación como se explicó anteriormente) . Tal método para administrar la clave de blanqueo puede, por supuesto, ser empleado sin apartarse del alcance o espíritu de la invención. Como será apreciado por los expertos en la técnica, puesto que en la modalidad ilustrada, los valores CBC-MAC para los bloques de información exportados son almacenados en la memoria de lectura/escritura volátil 18, si hubiera una falla de energía, o si ocurriera alguna otra condición de reajuste, los valores CBC-MAC en la memoria" 18 se perderán. Si los valores CBC-MAC se pierden, el autentificador 22 será incapaz de autentificar los bloques de autentificación exportados después de la reimportación y, de este modo, a menos que se tomen precauciones, resultará una condición de error. Debido a esas circunstancias, los expertos en la técnica apreciarán, que, a menos que se proporcione un dispositivo de almacenamiento permanente tal como un sistema a prueba de fallas para los valores CBC-MAC modificados, los bloques de información encriptada original deben ser preservados y utilizados al arrancar junto con los valores CBC-MAC originales. Como se explicó anteriormente, en el aparato ilustrado 10 los valores CBC-MAC para los bloques de información encriptada en su forma original son almacenados permanentemente en una memoria externa (por ejemplo, la ROM 142 en la Figura 3) y cargados nuevamente de la memoria 14 a la memoria de lectura/escritura 18 como parte del proceso de arranque. De este modo, cuando el aparato 10 sea reajustado, los valores CBC-MAC en la memoria de lectura/escritura 18 son de igual modo restablecidos a sus valores originales. Como resultado, en la modalidad ilustrada, el procesamiento siempre comienza con los bloques de información encriptada originales para asegurar que el procesamiento comience en un estado bien conocido, confiable. Como será apreciado por los expertos en la técnica, el método anterior para manejar el valor CBC-MAC implica que las modificaciones previas a la información encriptada se perderán. Esto no implica, sin embargo, que los resultados de las operaciones previas necesariamente se pierdan. En su lugar, el almacén no volátil que almacena datos modificados en usos previos del aparato 10 pueden ser almacenados en dispositivos de almacenamiento permanentes fuera del aparato 10 e importados cuando sea necesario. De este modo el almacén no volátil puede almacenar información en forma encrlptada y desencriptada, de acuerdo a lo indicado por la aplicación. Si se almacena en el formato encriptado y/o autentificado, la información de autentificación para tal información debe ser almacenada internamente vía algún almacén no volátil o almacenada fuera del aparato 10 en algún almacén no volátil e importada para su uso según sea necesario. Se prefiere el almacenamiento interno. El aparato ilustrado 10 encripta todos los bloques de información encriptada vía una clave triple, DES CBS triple con algoritmo de blanqueo. En la modalidad preferida, se emplea una jerarquía de clave. Los bloques de información se encriptan vía un proceso DES triple codificado con la clave de sesión. De este modo, se requiere la clave de sesión para desencriptar cualquiera de los bloques de información procesados por el sistema. Para obtener la clave de sesión, se debe tener acceso a la "clave maestra. Para obtener la clave maestra, se debe tener acceso a la clave del dispositivo. De este modo, mantener el secreto de la clave del dispositivo es de importancia primordial para proteger el ambiente de servicio creado por el aparato 10 contra los sabelotodo o entrometidos. Como se explica con mayor detalle más adelante, las formas no encriptadas de las claves del dispositivo, maestra y de sesión están disponibles únicamente en el cifrador 20 y el dispositivo clave del cifrador. Ellas preferiblemente no están accesibles por medio del procesador 16 en ningún momento. También es preferible almacenar" la clave del dispositivo en forma mezclada, y proteger esa clave vía un proceso de suma de verificación difuso descrito aquí. Como se utiliza aquí, "DK" se refiere a la clave del dispositivo; "MK" se refiere a la clave maestra; "SK" se refiere a la clave de la sesión; "EMK" se refiere a la clave maestra encriptada (es decir, la clave maestra encriptada con la clave del dispositivo) ; y "ESK" se refiere a la clave de sesión encriptada (es decir, la clave de sesión encriptada con la clave maestra) . Como se mencionó anteriormente, un aspecto de seguridad mayor para el aparato 10 es la preservación del secreto de las claves empleadas en el dispositivo 10. Las claves deben ser almacenadas en una memoria en algún lugar en el aparato 10. Sin embargo, los sabelotodo o entrometidos muy probablemente intentarán leer el material clave de esa memoria en un esfuerzo por frustrar el ambiente seguro. Por lo tanto, es imperativo incluir un aparato para controlar el acceso a datos confidenciales tales como material clave almacenado dentro del aparato 10. 3? Un diagrama de bloques más detallado de la aparato 10 ilustrado se muestra en la FIGURA 3. Como se muestra en esa figura, el aparato 10 está provisto con un dispositivo 30 que incluye una memoria no volátil 32 para almacenar datos y medios para controlar el acceso a los datos contenidos en la memoria 34. La memoria no volátil 32~ se implementa como una EEPROM en el aparato ilustrado 30. Sin embargo, los expertos en la técnica apreciarán fácilmente que podrían ser utilizados otros tipos de dispositivos de memoria en este papel sin apartarse del alcance o espíritu de la invención. De manera similar, aunque los medios de control podrían ser implementados por un circuito lógico 34 tal como un circuito de los componentes físicos de computación que incluya un número de compuertas lógicas configuradas para efectuar funciones predeterminadas tras la ocurrencia de condiciones predeterminadas, los expertos en la técnica apreciarán fácilmente que el circuito lógico 34 podría ser implementado de cualquier manera sin apartarse del alcance o espíritu de la invención. Por ejemplo, en la modalidad preferida el circuito lógico 34 es implementado por el procesador programado 16. El circuito lógico 34 está adaptado para tener acceso a la memoria 32 para determinar si al menos una porción de los datos contenidos en la memoria 32 comprende datos confidenciales. El circuito lógico 34 hace esta determinación analizando una propiedad inherente en los datos. De manera más específica, en el dispositivo ilustrado 10, el circuito lógico 34 identifica y cuenta cualesquier bloques de datos en la memoria 32 que tengan una característica predeterminada. Este entonces compara el número de bloques de datos contados con un valor umbral. El circuito lógico 34 usa los resultados de esta comparación como una indicación de la presencia o ausencia de datos confidenciales en la memoria 32. A manera de un ejemplo más específico, los datos almacenados en la memoria 32 son representados por una serie de bits; cada uno de los cuales tiene un estado lógico de "1" o "0" como es convencional. En el aparato ilustrado 10, el circuito lógico 34 está construido para contar el número de bits en la memoria 32 que tienen el estado lógico "1". El número contado es entonces comparado con un número umbral predeterminado. Si esa comparación indica que existe más de un número umbral de bits con el estado lógico "1" en la memoria 32, el circuito lógico 34 asume que los datos confidenciales están almacenados en la memoria y limita el acceso a ésta. Si la comparación indica que menos del número umbral de bits en la memoria 32 tienen el estado lógico "1", el circuito lógico 34 asume que no están ^presente datos confidenciales y remueve las restricciones colocadas sobre el acceso a la memoria 32. Este proceso de identificación y conteo de bloques de datos con una característica predeterminada y de comparación de los bloques contados con un umbral se conoce-aquí como el "proceso de suma de verificación difuso". Es importante notar que la determinación de si o no están presentes datos confidenciales en la memoria 32 se basa en una propiedad inherente de los datos en la memoria 34 en sí. En contraste, en los métodos de la técnica anterior, la determinación de si o no están presentes datos confidenciales en una memoria con frecuencia se efectuaba leyendo el estado de uno o más bits indicadores almacenados en la memoria. En tales dispositivos de la técnica anterior, los bits indicadores se fijan en un primer estado cuando no están presentes datos confidenciales y en un segundo estado cuando están presentes datos confidenciales. Esos métodos de la técnica anterior son desventajosos debido a que todo el bloqueo/desbloqueo de decisión de la memoria se ~ basa en el estado de un número relativamente pequeño de bits (algunas veces solo uno) , y esos bits no constituyen los datos protegidos o una indicación real de su presencia. Los sabelotodo o entrometidos con frecuencia intentan explotar esos métodos de la técnica anterior cambiando el estado de los bits indicadores, por ejemplo, dañando la memoria o introduciendo lecturas falsas. Si los sabelotodo o entrometidos tienen éxito al cambiar el estado de los bits indicadores, pueden convencer a esos dispositivos de la técnica anterior de que no están presentes datos confidenciales cuando en efecto tales dato confidenciales están almacenados en la memoria para obtener por lo tanto acceso a los datos confidenciales. De manera muy contrastante, en el aparato 30 ilustrado, no existen bits indicadores que controlen la decisión de bloqueo/desbloqueo. De este modo, el daño u otro cambio del contenido de una pequeña porción de la memoria 32 no será suficiente para desbloquear el dispositivo. En su lugar, si se selecciona un valor de umbral adecuadamente bajo, el estado de casi todos los datos en la memoria 32 debe ser cambiado para convencer al circuito lógico 34 de que no están presentes datos confidenciales. Además, puesto que los datos que son utilizados para identificar la presencia de datos confidenciales son los datos confidenciales en sí mismos, cambiar el estado de ^estos datos suficientemente para desbloquear la memoria 32 preferiblemente destruirá de manera sustancial todos los datos confidenciales almacenados en la memoria 32. En otras palabras, un cambio en la propiedad inherente suficiente para hacer que circuito lógico 34 determine que no están presentes datos confidenciales en la memoria 32 destruye sustancialmente los datos en la memoria 32. Como resultado, si los umbrales son fijados apropiadamente para la aplicación, habrán datos confidenciales insuficientes en la memoria para montar un ataque exitoso. Otra forma de ver esto es, la detección de datos confidenciales atados a la presencia de datos confidenciales en sí mismos, en lugar de alguna métrica artificial . Como será apreciado por los expertos en la técnica, el proceso de suma de verificación difuso descrito anteriormente puede ser efectuado en cualquiera de toda la memoria 32 o una sección de la memoria 32 sin apartarse del alcance o espíritu de la invención. Además, los expertos en la técnica apreciar n, que aunque el valor umbral puede fijarse en cualquier valor fijado sin apartarse del alcance o espíritu de la invención, de manera preferible el valor umbral se fija a un nivel relativamente bajo. En un mundo ideal, el umbral se fijaría en uno de modo que todos los datos confidenciales tuvieran que ser destruidos antes de que el aparato se desbloqueara. Pero para permitir la prueba, debe hacerse un intercambio o negociación entre la seguridad y capacidad de pruba al seleccionar el valor umbral. En realidad, en el aparato ilustrado, la porción controlada de la memoria 32 es de 3K bits y el valor umbral se fija en 64 bits. Los expertos en la técnica apreciarán que el valor umbral puede ser fijado en cualquier nivel deseado sin apartarse del alcance o espíritu de la invención. De manera preferible, el valor del umbral se selecciona en base a una determinación de que sería un nivel aceptable de revelación sin comprometer de manera inaceptable la seguridad del sistema. Además, los expertos en la técnica apreciarán que, aunque en el aparato ilustrado 10, los bloques de datos contados por el circuito lógico 34 son bits que tienen un estado lógico de "1", el circuito lógico 34 debería ser implementado para contar bits que tienen estados lógicos de "0", o para contar bloques de datos que comprenden una pluralidad de bits que tienen alguna propiedad tal como un valor binario que caiga dentro de un intervalo predeterminado de valores binarios (por ejemplo, entre 00000010 y 00010001) sin apartarse del alcance o espíritu de la invención. Una tensión inherente en el aparato ilustrado 10, 30, se encuentra entre la necesidad de seguridad y la necesidad de probar y la capacidad de programación inicial. De manera más específica, aunque como se describió anteriormente, es esencial controlar el acceso al depósito del material clave utilizado para desencriptar/encriptar bloques de información (es decir, la memoria 32) , es igualmente crucial permitir probar la memoria 32 antes de la venta del producto y, en el caso de un producto regresado, después de que ha ocurrido la venta y el aparato 1 ha sido utilizado en el campo. La prueba con frecuencia requiere leer y escribir a la memoria 32. Por lo tanto, permitir la prueba es adverso para mantener el secreto de los datos almacenados en la memoria 32. En el aparato ilustrado 10, la prueba puede ser conducida únicamente después de que la prueba de la suma de verificación difusa discutida anteriormente indica que no están presentes datos confidenciales en la memoria 32. Con respecto a las unidades regresadas y similares que ya han sido programadas con datos confidenciales, la prueba puede ser efectuada únicamente borrando primero la memoria 32. De este modo, el aparato 10 está provisto con medios para activar de manera segura la memoria 32 a través de un proceso controlado^ como se describe más adelante. También puede ser utilizado el método de borrado como una respuesta a la manipulación indebida si así se desea para la aplicación.
Para evitar que los sabelotodo o entrometidos tengan acceso a datos confidenciales dentro de la memoria 32 activando el borrado parcial de la memoria (por ejemplo, activando el borrado y a continuación interrumpiendo rápidamente la energía al aparato) , el circuito lógico 34 está construido para responder a un activador de borrado para borrar la memoria 32 reemplazando los bloques de datos originalmente almacenados en la memoria 32 con bloques de datos intermedios que tienen uno o más valores intermedios antes de borrar la .memoria 32 a un estado final. Los valores intermedios se seleccionan para asegurar que el número de bloques de datos con la propiedad inherente almacenados en la memoria 32 permanezcan a un nivel que haga que el circuito lógico 34 indique la presencia de datos confidenciales hasta que todos los datos confidenciales sean destruidos. El circuito lógico 34 borra la memoria 32 al estado final reemplazando los bloques de datos intermedios almacenados en la memoria coa bloques de datos finales que tienen uno o más valores finales . De manera más específica, en el aparato ilustrado 10, 30, el circuito lógico 34 borra la memoria 32 en tres etapas. En una primera etapa, el circuito lógico 34 escribe un primer valor intermedio a un primer grupo de lugares en la memoria 32. En una segunda etapa, el circuito lógico 34 escribe un segundo valor intermedio un segundo grupo de localizaciones intermedias en la memoria 32. En una tercera etapa, el circuito lógico 34 escribe un valor final a ambos del primer y segundo grupos de localizaciones de la memoria 32. El primer valor intermedio se selecciona preferiblemente de modo que, si el borrado de la memoria 32 se, termina después o durante la primera etapa, el número contado de bloques de datos con la propiedad inherente en la memoria 32 indicará la presencia de datos confidenciales. En otras palabras, los valores intermedios se seleccionan para que sean datos no confidenciales que tengan la propiedad inherente. Cada mitad de la información confidencial es seleccionada de modo que tenga la propiedad inherente para asegurar que la presencia de cualquier mitad sea suficiente para clasificar la información de manera confidencial bajo el proceso de suma de verificación difuso. Esta selección se hace debido a que, cuando se efectúa un borrado completo, algunas memorias entran en un estado indefinido el cual puede clasificar de manera falsa el dispositivo como si no contuviera información confidencial. La propiedad inherente de cada mitad deberá estar significativamente sobre el umbral para proteger contra clasificaciones falsas en el caso de alguna degradación de la memoria no volátil. En la modalidad preferida, deben colocarse al menos 96 bits en cada mitad. Esta no es una restricción no razonable dado que el material clave generado aleatoriamente deberá ser desviado y deberá, de este modo, satisfacer fácilmente este número. En el aparato 10 ilustrado, el primer y segundo valores intermedios son idénticos. Ellos se fijan en el valor hexadecimal 0x55. También en el aparato 10 ilustrado, la primera etapa se efectúa escribiendo el valor hexadecimal 0x55 en todas las direcciones par en la memoria 32; la segunda etapa se efectúa escribiendo el valor hexadecimal 0x55 en todas las direcciones impar de la memoria 32; y la etapa fina se efectúa escribiendo el valor hexadecimal 0x00 en todas las direcciones en la memoria 32. Los expertos en la técnica, sin embargo, apreciarán que pueden ser seleccionados otros valores para el primer valor intermedio, el segundo valor intermedio y/o el valor final, y/o que puedan emplearse más o menos etapas de borrado sin apartarse del alcance o espíritu de la invención. Es bien sabido que los sabelotodo o entrometidos algunas veces intentan leer el contenido de una memoria vía varios ataques físicos. Para evitar que sean empleadas esas técnicas para frustrar las medidas de seguridad utilizadas para mantener el contenido de la memoria 32 de manera confiable, pueden emplearse varios medios de seguridad (por ejemplo, puede asegurarse físicamente una capa protectora a la memoria 32) . Como será apreciado por aquellos expertos en la técnica, los procedimientos de suma de verificación difusos discutidos anteriormente pueden ser utilizados para definir el estado de seguridad de la memoria 32 o un sistema que contenga la memoria. Si el proceso de suma de verificación difuso indica la presencia de datos confidenciales, la memoria 32 es identificada como si estuviera en un primer estado de seguridad. Si no están presentes datos confidenciales, la memoria 32 es definida como si estuviera en un segundo estado de seguridad. En el aparato ilustrado 10, 30, la prueba de la memoria 32 es permitida únicamente cuando la memoria 32 está en su segundo estado de seguridad. Cómo se discutió anteriormente, el aparato ilustrado 10 impone al menos dos células de seguridad, a saber, una célula de modo de núcleo y una célula _ de modo de usuario. El procesador 16 preferiblemente opera programas y sistemas de programación no seguros en el modo de usuario y programas y sistemas de programación seguros en el modo de núcleo. Para muchas aplicaciones, dos células de seguridad son suficiente. Sin embargo, en algunos casos, es deseable tener más de dos células de seguridad. Por ejemplo, puede ser deseable permitir tareas múltiples entre tareas seguras múltiples, puede ser deseable proporcionar protección entre dos o más células ejecutando programas y sistemas de programación simultáneamente (por ejemplo, diferentes sistemas de acceso condicional de diferentes vendedores) , y puede ser deseable prevenir los compromisos de una célula a comprometer todo el sistema. Como se muestra en la FIGURA 2, el aparato ilustrado 10 puede ser opcionalmente provisto con una unidad de administración de memoria 38 para facilitar la imposición de múltiples células de seguridad a través de espacios de dirección "separados y paginación de demanda entre la memoria interna segura 18 y la memoria externa SDRAM 24. En la modalidad ilustrada, la unidad de administración de memoria 38 es implementada como un coprocesador que ayuda al procesador 16 a aportar recursos de memoria entre las múltiples células de seguridad según sea necesario. En esta aplicación, cada página es un bloque encriptado y autentificado independientemente, por separado. Además, se apreciará que algunas o todas las células de seguridad pueden funcionar en un modo de usuario, de modo que tengan acceso limitado a dispositivos periféricos seguros internos pero que tengan aún un ambiente seguro, protegido. Los expertos en la técnica apreciarán que pueden ser implementados muchos dispositivos en el papel de administración de la memoria sin apartarse del alcance o espíritu de la invención. Específicamente, esta función puede ser fácilmente acomodada por una unidad de administración de memoria estándar. — Como se muestra en la FIGURA 3, el procesador 16 se implemento mediante la R3000A MIPS RISC CPU (Unidad de Procesamiento Central de Computadora de Conjunto de Instrucciones Reducido a millones de instrucciones por segundo) que forma el núcleo del microcircuito integrado R3904 vendido por Toshiba. Como también se muestra e la FIGURA 3, la memoria no volátil 14 se implementa preferiblemente por medio de una ROM; la memoria no volátil 32 se implementa de manera preferible por medio de una EEPROM; la memoria de lectura/escritura 18 se implementa de manera preferible por medio de una memoria de datos volátil (DMEM); y el cifrador o codificador 20 y el autentificador 22 se implementan por medio del mismo circuito de los componentes físicos de computación para tener influencia sobre las ventajas de funcionamiento del cifrador de los componentes físicos de computación y debido a que la mayoría de los cifradores de bloques deben ser adaptados para una elección arbitraria segura. Sin embargo, el cifrador 20 y/o el autentificador 22 podrían ser implementados por programas" y sistemas de "programación sin apartarse del alcance de la invención. Combinar el cifrador 20 y el autentificador 22 puede no ser algo aceptable donde los requerimientos de seguridad del dispositivo requieren una elección arbitraria mayor que el tamaño del bloque del cifrador. El procesador 16 se comunica con la ROM 14, un circuito lógico 34 y la DMEM 18 vía el conductor colectivo general _de. 32 bits 40 (GBUS) , el cual, en algunas aplicaciones," también actúa como los medios de importación/exportación para importar y exportar secciones de información encriptada entre la DMEM 18 y la SDRAM 24 como se explicó anteriormente. Para el propósito de controlar el movimiento de los bloques de información entre la DMEM 18 y el cifrador 20 y para compartir el cifrador 20 con la función de transporte satélite en la FIGURA 1, el aparato-10 está provisto además con un segundo procesador 42. Como se muestra en la FIGURA 3, "el segundo procesador 42 está en comunicación con el cifrador 20 (implementado en el aparato ilustrado 10 por el módulo criptográfico 20), y con la memoria de lectura/escritura 18 (en la modalidad ilustrada, la DMEM) vía un conductor -colectivo 44. El segundo procesador 42 está adaptado para iniciar la desencriptación y reencriptación de - bloques de información almacenados en la DMEM 18. En la modalidad ilustrada, el segundo procesador 42 es implementado por un secuenciador . La-presencia del secuenciador , 42 y su conexión al cifrador 20 en la modalidad descrita está dictada por la aplicación final (FIGURA 1) y no es necesaria para una implementación exitosa de la invención. En el aparato ilustrado 10, el secuenciador 42 actúa como un dispositivo semejante al procesador 16. Para facilitar la entrega de instrucciones del procesador 16 al secuenciador 42, el aparato 10 está provisto con una memoria de instrucciones (IMEM) 46. En operación, cuando el procesador 16 necesita solicitar al secuenciador 42 que efectúe una tarea, escribe las instrucciones necesarias en la IMEM 46 y envía una señal de control al secuenciador 42 que indica la presencia de instrucciones en la IMEM 46. El secuenciador 42 lee y ejecuta entonces las instrucciones de la IMEM 46. Como se mencionó anteriormente, el aparato 10 está provisto con un autentificador 22 el cual sirve para autentificar información desencriptada antes de ser ejecutada por el procesador 16 y para reautentificar la información antes de la encriptación po —el cifrador 20. En el aparato ilustrado 10, el autentificador 22 es implementado por medio del cifrador 20.
También como se mencionó anteriormente, el cifrador 20 está preferiblemente adaptado para efectuar el ciclaje de claves con respecto a las claves de blanqueo utilizadas para asegurar que" los bloques de información reencriptada siempre aparezcan diferentes a lo que eran antes de la desencriptación. Para generar las nuevas claves de blanqueo inherentes al procedimiento de ciclaje de claves, el aparato 10 está provisto con una fuente de entropía 48 la cual se utiliza para resembrar continuamente un generador de números psettdoaleatorios criptográficamente fuerte (CSPRNG) . Para tomar ventaja del funcionamiento del cifrador de los componentes físicos de computación existente 20, el cifrador 20 implementa el CSPRNG. Como se muestra en la FIGURA 3, la fuente de entropía 48 está en comunicación con el secuenciador 42 y el módulo criptográfico 20 vía el conductor colectivo 44. El secuenciador 42 está adaptado para solicitar a la fuente de entropía 48 que genere un nuevo número aleatorio cuando se requiera y que entregue el número aleatorio al módulo criptográfico 20 para ser utilizado por el CSPRNG en la generación de la clave de blanqueo a ser utilizada en el proceso de reencriptación . Como también se mencionó anteriormente, algunas de las claves utilizadas en el algoritmo de clave triple, DES triple, están almacenadas en la memoria 32. Para asegurar que esas claves estén solo disponibles en el cifrador 20 y la memoria 32, y que esas claves no estén accesibles al procesador 16, el secuenciador 42 o cualquiera de los programas y sistemas de programación/instrucciones fijas las ejecutan, el aparato 10 está provisto con un circuito de aislamiento de claves 50 que conecta el circuito lógico 34 al cifrador 20 para cargar la clave de uso fundamental de la jerarquía de claves. De manera más específica, el aparato ilustrado 10, el circuito de aislamiento de claves 50 proporciona un mecanismo para entregar el material clave necesario de la EEPROM 32 al módulo criptográfico 20. Para asegurar que otros componentes del sistema (componentes físicos de computación, programas y sistemas de programación o instrucciones físicas) no tengan acceso a las claves, la memoria 32, el circuito lógico 34, el circuito de aislamiento de claves 50 y el módulo óriptográfico 20 definen un sistema cerrado. También, como se discutió anteriormente, los estados de los pernos externos son forzados a un estado predefinido durante el acceso a dispositivos periféricos internos seguros para prevenir que la información sensible quede expuesta al exterior del ambiente _ seguro . Hasta este punto, el aparato 10 está provisto con uno o más circuitos silenciadores en modo de silencio 52. Los circuitos silenciadores en modo de silencio 52 son implementados de manera preferible como circuitos de los componentes físicos de computación, incluyendo compuertas lógicas las cuales llevan los pernos externos al estado predefinido (tal como un triestado) excepto después de la detección de que el ciclo del conductor colectivo no tiene acceso a datos confidenciales. Esta detección puede efectuarse en base a la dirección que aparece sobre el conductor colectivo. De esta manera, ambos accesos a datos confidenciales internos así como la inactividad del conductor colectivo son enmascarados. Como resultado, se le niega a un sabelotodo o entrometido información para ataques estadísticos basados en detalles tales como el flujo de ejecución, tiempo de ejecución de instrucciones, o el orden de acceso ~a los datos.
Discusión de los Programas y Sistemas de Programación VersaCrypt Por razones de seguridad, es necesario que el Núcleo Seguro coloque varias restricciones sobre las cuales pueden ser utilizados los Sistemas Operativos en Tiempo Real (RTOS) con el aparato 10. La siguiente lista contiene los requerimientos/restricciones que deben satisfacer los RTOS: 1. Conmutación de Contexto -- El Núcleo Seguro (siendo ejecutado sobre el RISC 54 (16) ) efectúa la conmutación de contexto real (es decir, conmutación entre tareas), pero únicamente lo hará cuando se le solicite que actúe explícitamente. Son soportadas ambas conmutaciones de contexto sustitutivo y no sustitutivo. — - " 2 . Ayuda de Conmutación _ de ""Contexto VersaCrypt — Se espera que los RTOS cologuen un indicador para indicar cuando el applet VersaCrypt tiene suficiente tiempo de ejecución para considerar permitir que otro applet VersaCrypt funcione. La decisión final es hecha por el Núcleo Seguro en base a si puede ser ejecutado otro applet VersaCrypt, y si tal operación está actualmente desactivada. 3. Arranque del Sistema -- El Núcleo Seguro está implicado integralmente con el proceso de "arranque del sistema. Si los RTOS tienen cualesquier requerimientos acerca del estado inicial, donde se ha cargado de, o cómo se ha cargado, estos pueden ser acomodados por el applet automático VersaCrypt que es parte del arranque del Núcleo Seguro. 4. Modo de Núcleo -- El Núcleo Seguro y el VersaCrypt (es decir, los programas " y ' sistemas de programación encriptados que están siendo ejecutados dentro del ambiente seguro proporcionado por el aparato 10) tienen solo el uso del modo de Núcleo del procesador. Esto implica a) Administración de Interrupción — todas las interrupciones serán administradas por el Núcleo Seguro, y a continuación pasadas a una tabla de administradores proporcionados por el Usuario. b) Llamadas de Sistema — el API para el Núcleo Seguro es vía la instrucción Syscall. Los RTOS" pueden no implementar cualesquier llamadas del sistema vía la instrucción Syscall. c) Administración de Errores — eventos tales como los errores del Conductor Colectivo, etc., no son pasados a los RTOS. d) Mapa de Direcciones -- todos los dispositivos periféricos "no seguros están trazados en un mapa en el espacio "de dirección del usuario, de modo que el Núcleo Seguro no se convierta en un cuello^ de botella para tener acceso "a ellos. 5. Globales de Memoria Baja — Existe una pequeña cantidad (menos de 256 bytes) de las variables globales utilizadas para comunicarse entre los programas y sistemas de programación del usuario y el Núcleo Seguro. Si los RTOS tienen cualesquier globales de memoria baja, no entrarán en conflicto con ellos. 6. Código seguro para los RTOS -- Los RTOS deben ser modificados para funcionar sobre el Núcleo Seguro.
La FIGURA 4 ilustra la relación entre las diferentes clases de programas y sistemas de programación que funcionarán sobre el procesador MIPS 54 (16) . La diferencia entre este modelo, y un modelo más tradiciones es que ciertas funciones requieren pasar a través del Núcleo Seguro. Esas funciones son: 1. acceso a los componentes físicos de computación que son controlados por razones de seguridad; 2. cualesquier funciones que deban ser asumidas por razones de seguridad, tales como despachar administradores de interrupción; y 3. comunicaciones con el ambiente VersaCrypt, para tener una interfaz o interconexión segura bien definida. Aunque los applets VersaCrypt son capaces de tener acceso directamente al Sistema Operativo en Tiempo Real y los programas y sistemas de programación de aplicación, tanto vía acceso variable y llamadas de subrutinas, ellos se restringirán por sí mismos a comunicarse a través del API del Núcleo Seguro. La mayoría de las llamadas al sistema son ejecutadas con interrupciones desactivadas, pero se espera que algunas que tienen un tiempo de ejecución más prolongado se ejecuten con interrupciones activadas como parte de las tareas de los invocadores pero con sustitución desactivada. Es un requerimiento de seguridad, puesto que existen un número limitado de contextos de Núcleo disponibles en la memoria interna 18. Esta capacidad de desactivar la sustitución es solo ejercida durante un tiempo limitado por el Núcleo Seguro. También podría ser utilizada por un applet VersaCrypt, si fuese necesario, pero su uso es desalentado debido a su impacto sobre el funcionamiento en tiempo real. Existe también una pequeña cantidad de ciclos que son robados cuando se regresa de las interrupciones o se efectúan cambios del contexto de funcionamiento que soportan la operación de exportación/importación del VersaCrypt. Este código es ejecutado con interrupciones activadas (la misma máscara de interrupción antes de que fuera despachada la interrupción) para reducir al mínimo el impacto sobre la latencia de la interrupción. La cantidad de tiempo tomada es suficientemente pequeña de modo que no sería valioso efectuar una conmutación de contexto a la Tarea del Núcleo, y hacer esto no afecta en gran medida el funcionamiento del sistema, sino que hará una gran diferencia en el funcionamiento de las operaciones de exportación/importación del VersaCrypt. Todos los modos de programas y sistemas de programación del modo de Núcleo ejecutan una tarea del Sistema Operativo en Tiempo Real. Esta es compartida por el Núcleo Seguro, todos los applets VersaCrypt, y cualesquier funciones de usuario invocadas por los programas y sistemas de programación de modo de núcleo. La razón por la que todos comparten una tarea común es que únicamente un applet VersaCrypt (a lo más) es realmente importado y puede ser sintonizado a un tiempo. Para poder soportarlos como tareas múltiples, el Sistema Operativo en Tiempo Real requeriría múltiples applets VersaCrypt marcados como ejecutables, pero ellos inmediatamente se bloquearían cuando se efectúe una conmutación o cambio de contexto a un applet VersaCrypt exportado hasta que pudiera efectuarse una operación de exportación/importación. Esto inutilizaría el VersaCrypt, a menos que el programador del Sistema Operativo en Tiempo Real fuese extensivamente modificado. La porción del Núcleo Seguro que se ejecuta en esta tarea son los programas y sistemas de programación de exportación/importación (cuya ejecución es siempre mutuamente excluyente con la ejecución "del VersaCrypt) o en respuesta a llamadas del sistema que se ejecutan como parte de las tareas del invocador. La función de usuario está siempre ejecutándose" de acuerdo a lo requerido por el VersaCrypt o el Núcleo Seguro, y de este modo es lógicamente parte de la ejecución de la tarea. Puesto que una función de usuario es una llamada sincrónica, el invocador debe esperar a que se complete. Serían tomados otros medios si se esperarían sea suficientemente prolongado para considerar una operación de exportación/importación, tal como enviar un mensaje de que podría bloquearse otra tarea. Las implementaciones de núcleo seguro soportan una llamada sincrónica entre los programas y sistemas de programación del núcleo y una función de usuario. La importancia de esto es proporcionar una transferencia segura entre los dos modos y proteger el estado del núcleo. Cuando el Núcleo Seguro no " es ejecutable, seguirá llamando a la rutina de los RTOS para permanecer inactivo durante un tictac. Esto incluye el tiempo cuando no existen applets VersaCrypt que ejecutar, así como el tiempo cuando se está efectuando una operación de exportación/importación del VersaCrypt. Esto puede producir un retraso inicial de hasta un tictac hasta comenzar a ejecutar la solicitud del VersaCrypt o hasta el inicio de la operación de exportación/importación del VersaCrypt para cargar el applet solicitado. El código del secuenciador (ejecutado desde la IMEM 46) es dividido en segmentos de núcleo y usuario. El segmento del núcleo es dividido aún más en una' sección permanentemente cargada que proporciona funciones del sistema y una segunda sección donde los otros, applets del secuenciador del núcleo están sobrecargados en base a las necesidades.
Se pretende que el uso del Versa-Cript satisfaga las demandas en tiempo real flexibles. Este no puede satisfacer demandas en tiempo real estrictas debido al tiempo prolongado (múltiples ms) que toma efectuar una operación de exportación/importación. Aunque no se garantiza una latencia pequeña debido a este tiempo de conmutación de contexto, en la modalidad descrita puede soportar 10 las peticiones por segundo mientras_ utiliza un pequeño porcentaje de los recursos del sistema para la operación de exportación/importación. Si la mayoría de las peticiones únicamente implican un solo applet VersaCrypt, entonces la operación de exportación/importación es evitada y los 100Q (o más) de peticiones por segundo pueden ser procesadas. También es muy notorio que algunas de esas peticiones pueden tomar peticiones prolongadas de tiempo para procesarse, tal como una operación de la clave RSA que puede tomar múltiples segundos para completarse, dependiendo de la longitud de la clave. Las aplicaciones se interconectan con el VersaCrypt a través de un API simple que permite que sean puestas en fila de espera múltiples peticiones para el mismo o múltiples applets VersaCrypt, con filas de espera separadas por cada applet VersaCrypt. Esas peticiones son manejadas o administradas asincrónicamente al invocador, y se ejecuta una función de reinvocación suministrada por el usuario al completar el manejo o administración de los resultados, o esta reinvocación podría posponer algún evento que la tarea del invocador podría bloquear. Si el cifrador 20 soporta múltiples tamaño de clave, es decir, operaciones DES simples, entonces deben existir interbloqueos para proteger contra ataques crecientes sobre claves DES triples. Aún si se utiliza una jerarquía de claves, es importante autentificar cualesquier claves encriptadas antes de ser confiables . Generalmente se acepta que es más seguro que un dispositivo genere sus propias claves, en lugar de inyectarlas del exterior. Si el dispositivo tiene la capacidad de generar adecuadamente su material clave, es más seguro conocer esta durante un tiempo limitado externo al dispositivo. Lo que es conocido no puede ser divulgado. Lo que nunca está fuera, nunca puede ser interceptado. El aparato 10 es capaz de ejecutar programas y sistemas de programación en una forma no observable externamente y tiene un generador de números aleatorios (RNG 48) en los componentes físicos de computación. La autogeneración de claves es un ejemplo de la clase de operación que fue diseñada para efectuar. Esta capacidad es de gran importancia en la codificación de un dispositivo seguro cuando la seguridad física de fábrica no pueda ser mantenida. En un método de autocodificación posible, el aparato 10 requiere tres secretos para generar su propio material clave. El primer secreto son las claves de transporte (es decir la EMK de exportación/importación de los programas y sistemas de programación, la triple clave, la triple DES) que están programadas en el ASIC de fábrica. El segundo secreto es una ESK (triple clave, triple DES) con sus applets VersaCrypt asociados, todos los cuales son proporcionados en una segunda fábrica. El tercer secreto es, por ejemplo, una clave privada RSA (grande) para el servidor de clave. El servidor de clave se localiza preferiblemente en un tercer sitio asegurado físicamente conocido como bóveda. Para generar claves en un aparato 10, se requieren los siguientes componentes físicos de computación: 1. Un servidor de clave 120 y 2. un "criba de prueba" 122 (véase la Figura 5) . El servidor de clave 120 en la bóveda 124. El servidor de clave 122 es implementado como una computadora personal (PC) con una conexión de red y con un aparato 10' que ejecuta programas y sistemas de programación especiales. El I/F de satélite 94 está opcionalmente conectado a una fuente aleatoria de los componentes físicos de computación 126, para tener acceso a una entropía durante la generación de la clave. El material clave para este adaptador 10' debe ser único, de modo que si están comprometidos cualesquier otros adaptadores en el campo, no comprometan la seguridad del servidor de claves 120. El servidor de claves 120 está preferiblemente aislado de la red 128 por una pared de fuego 132. La criba de pruebas 122 se coloca en la segunda fábrica. En la modalidad descrita, la criba de pruebas 122 es implementada por una PC que está conectada a cada aparato 10 como si estuviese programado. La criba de prueba 122 está conectada al servidor de clave 120 a través de alguna interconexión de red 128. El I/F de satélite 94 del aparato 10 también está opcionalmente conectada a una fuente aleatoria de componentes físicos de computación 130 por la misma razón. Esta puede ser opcionalmente aislada de la red 128 por una pared de fuego 132. La programación de un aparato 10 cargado en la criba de prueba 122 no será descrita. Los pasos de este procedimiento de programación se ilustran en la Figura 6. En la Figura 6, las acciones que ocurren en el adaptador 10 está siendo programadas se muestran a la izquierda; las acciones que ocurren en el servidor de claves 120 se muestran a la derecha; y las comunicaciones entre el servidor de claves 120 y la criba de pruebas 122 está representadas por las flechas en la parte media del diagrama . El aparato 10 de manera segura de una ROM externa, como se describe en la operación de arranque más adelante. Todas las siguientes operaciones son de los applets VersaCrypt. Todas las comunicaciones son entre los applets Versacrypt en el servidor de claves 120, y los applets Versacrypt en el aparato 10 siendo programada la criba de prueba 122. De manera preferible, todos los datos se almacenan en un disco en el servidor de clave 120 encriptados para protegerlos contra acciones comprometedoras/virus en el servidor de clave 120. El primera applet contiene la "clave pública" del servidor de clave 120, aunque esta realmente no es conocida públicamente. La fuente aleatorea de los componentes físicos de computación 130 es utilizada para actualizar el material sembrado aleatoreamente . Para maximizar el efecto de los bits aleatorios externos, se efectúa la actualización del material sembrado un número de veces específico de la aplicación. El aparato 10 estando programado entonces produce una clave triple, clave de sesión DES triple. Esta clave es encriptada con la clave pública del servidor de claves 120 y es enviada al servidor de claves 120 utilizando la interconexión de la red de la criba de prueba 122. El servido de clave 120 valida llamando a un aparato 10 para verificar la Dirección IP de origen. También habla a un aparato 10 debido a la fuente utilizada para la clave pública. El servidor de clave 120 confirma que nunca (o en el último número de veces específico de la aplicación) ha visto esta clave de sesión antes, para protegerse contra ataques de datos repetidos o una fuente aleatoria corrompida 130. Después de desencriptar la clave de sesión con su clave privada, todas las comunicaciones futuras entre el aparato 10 estando programado y el servidor de clave 120 son ejecutadas (0-CBC) con esta clave de sesión y contiene una elección arbitraria SHA para validarla. También incluyen el número de serie único asignado a este aparato 10 y un tipo de paquete, para proteger contra intentos de ataques de datos. El servidor de clave 122 envía entonces al aparato 10 algunos numero aleatorios de la fuente del servidor de clave 126 (que se asume son más seguros) , para actualizar el material sembrado en el aparato 10. Ese también enviará cualquier configuración asignada, tal como un número de serie, un MK de exportación/importación de ^programas y sistemas de programación.
El aparato 10 sabe comunicarse con el servidor de clave 120 puesto que la entidad que responde debe conocer la clave privada para obtener la clave de sesión. El aparato 10 actualiza su material sembrado aleatoriamente en base a los números aleatorios recibidos del servidor de clave 120 y genera una nueva imagen de la EEPROM de 512 bites (el contenido se describe más adelante) . El aparato 10 también genera cualesquier otros datos confidenciales que puedan ser necesarios para una aplicación. El aparato 10 envía entonces las claves públicas RSA al servidor de clave 120, quien la señala en una base de datos 134, las guarda, y regresa las claves señaladas . El aparato 10 envía entonces al servidor de clave 120 cualquier información confidencial que pueda necesitarse compartir por razones de operación o legales. El servidor de clave 120 entonces registra cronológicamente el material depositado recibido, y le indica al aparato " 10 confiar su configuración. Finalmente, el aparato 10 responde reprogramando su EEPROM 32 e informando a la criba de prueba 122 lo que ha sucedido, de modo que la criba de prueba 122 pueda proceder con el siguiente aparato 10. Los expertos en la técnica apreciarán de lo anterior que, para poder romper la seguridad de la generación de claves obteniendo acceso a la clave pública, se requiere Una colusión entre alguien en la fábrica de microcircuitos integrados y alguien en la segunda fábrica. Aún con acceso a esos tres secretos, el sistema permanece inmune a cualesquier ataques pasivos. La EEPROM 32 preferiblemente incluye los siguientes bloques de datos. Las aplicaciones que requiere EEPROM adicionales pueden opcionalmente utilizar una EEPROM no segura, una EEPROM encriptada externa con una clave específica del dispositivo (y autentificada internamente) y/o una EEPROM 32 interna más grande. Bits Uso 1024 Clave mezclada del dispositivo. Esta es la raíz de la jerarquía de las claves. No es directamente accesible a los programas y sistemas de programación. 32 Suma de verificación o MAC sobre el bloque restringido de la EEPROM 32, excepto la clave mezclada del dispositivo (debido a que los programas y sistemas de programación no pueden leerla) . 192 EMK exportación/importación "de programas y sistemas de programación (clave maestra encriptada, la segunda clave en la jerarquía de claves) . 192 Clave para el generador de números aleatorios CSPRNG 32X2 Sembrado para el generador de números aleatorios de los componentes físicos de computación. [Las siguientes secciones constituyen el área de núcleo programable en el campo] 64 Sembrado para el generador de números aleatorios CSPRNG. [El espacio del usuario comienza aquí. Este será copiado en la SDRAM externa] 32 Configuración de los componentes físicos de computación.. 32 Número de serie de esta unidad. 32 índice de EMK de exportación/importación de los programas y sistemas de programación. Empleado para indicar cual EMK fue utilizada de modo que la ESK derecha puede ser proporcionada cuando se carguen programas y sistemas de programación.
Detalles de Implementación Relacionados con El Núcleo Seguro El propósito principal del Núcleo Seguro es proporcionar el ambiente VersaCrypt, pero para hacer esto deben estar implicadas las siguientes operaciones: arranque, proceso de interrupción, conmutación de contexto, llamadas de sistema, manejo de excepción, manejo de condiciones de alarma y manejo del VersaCript.
Secuencia de Arranque Después de arrancar, el Núcleo Seguro ejecuta las siguientes secuencias de operaciones. La secuencia se muestra en el formato de diagrama de bloques en la Figura 7.
A. Examinador del Registro de Reajuste/Causa de NMI El registro de reajuste/causa de NMI es un registro de los componentes físicos de computación utilizado para detectar las causas de todas las condiciones de reajuste/NMI que pueden deberse a alarmas. Si contiene una condición de alarma (bloque 144), entonces en el reajuste o NMI, los programas y sistemas de programación desactivan algunos de los dispositivos periféricos internos. La razón de esta operación es para detener las operaciones que pueden hacer que ocurran alarmas adicionales, o interferir con el procesamiento de errores. Si se permite la depuración (bloque 148), la ejecución se transferirá a una rutina externa a la ROM interna para volver disponible la información acerca de las causas. La operación del sistema, sin embargo, no podrá continuar (bloque 150) .
De otro modo, si este es un producto autónomo (es decir, una caja superior sin procesador externo) (bloque 152) , de acuerdo a lo indicado en un lugar en la EEPROM 32, el dispositivo 10 efectúa una operación de autorreajuste (bloque 14) . Es decir que, en el caso de errores recuperables, la unidad 10 continuará operando sin intervención del usuario. Por supuesto, en el caso de errores no recuperables, la unidad 10 se mantendrá reíniciando indefinidamente, y la causa no será fácilmente determinable. La causa deberá ser escrita en un lugar bien conocido, antes de autorreajustarse, de modo que pueda ser diagnosticada con un analizador lógico si fuese necesario. Si el aparato objeto 10 no es una unidad autónoma (bloque 52) (es decir un segundo procesador externo) , todas las operaciones se detendrán, la memoria no será limpiada, el código de la causa se volverá disponible (a través de la PCI 80, una operación de conductor colectivo externamente visible, y el LED 140), y el microcircuito integrado 10 esperará un reajuste externo (bloque 56) .
B. Diagnóstico de Inicio y Componentes Físicos de Computación de Inicialización Los componentes físicos de computación importantes o seguros mínimos serán inicializados . Si no está presente una condición de alarma (bloque 144) , algunos de los componentes físicos de computación inicializados, todos los registros del procesador y las memorias internas (IMEM 46 y DMEM 18) y algunas variables globales serán empleadas (bloque 164) de modo que los datos de una aplicación previa nS serán expuestos, especialmente si se ejerció la función de borrado total.
C. Operaciones de la EEPROM Si se activa un borrado total, entonces se emplea la operación de borrado total de tres pasos anteriormente descrito. La sección de 3K de la EEPROM 32" es leída y se calcula una densidad de 1. Si la densidad de 1 se encuentra por debajo de un umbral de 64 {bloque 170), se asume que no está presente material clave y puede ocurrir una prueba o programación inicial. En tales circunstancias, se desactivan algunos circuitos de seguridad (bloque 172) . Si está presente un patrón fijo (utilizado para detectar la presencia de una ROM externa 142 (bloque 174), la ROM externa 142 será omitida (bloque 176) . Si la ROM externa 142 está presente (bloque 174), el aparato 10 será bloqueado, pero permitirá al menos pernos de prueba externos (bloque 178).
Si el proceso de suma de verificación difuso indica la presencia de datos confidenciales en la memoria 32 (bloque 170) , se calcula una suma de verificación sobre el bloque restringido de la EEPROM 32 (bloque 182) . Si la suma de verificación es mala, ocurre un e ror fatal (bloque 184) . El aparato 10 se bloquea debido a que la EEPROM 22 se ha degradado o la unidad 10 ha sido manipulada de manera indebida. Si la suma de verificación es correcta (bloque 182) , se ajustan varias configuraciones de los componentes físicos de computación en base a los valores recibidos de la EEPROM 32 (bloque 186) .
D . Retraso Ocurre entonces un retraso relativamente pequeño (nominalmente de 1 segundo) (bloque 186) . El retraso sirve para múltiples propósitos. De manera más importante, hace que a un atacador le tome más tiempo por iteración (para muchos tipos de ataques automatizados) sin que sea notable a los usuarios durante el tiempo más prolongado de reinicio del sistema.
E. Inicializasión Segura o Componentes Físicos de Computación Importantes Ahora son inicializadas algunas variables globales (bloque 186) . En la preparación para cargar el cargador automático del VersaCrypt, el applet del secuenciador cargado permanentemente del Núcleo Seguro, y su applet secuenciador del Usuario ficticio son cargados a la IMEM 46 y el secuenciadsr 42 es iniciado (bloque 186) . También, se carga el código RISC del usuario ficticio. El applet ficticio y el código RISC son cargados de modo que la carga del applet del cargador automático - del VersaCrypt utilizará el mismo código que es utilizado bajo la operación normal, en lugar de mantener una segunda versión utilizada solo para arrancar el sistema. El Núcleo normal, el secuenciador y el código RISC normales para importar un applet VersaCrypt asumen que está presente el código del usuario e interactúan con éste. Se espera que los applets del secuenciador del Núcleo sean invocados por los antecedentes del usuario, y deben tener un administrador en primer plano (parte de la función de transporte de satélite del microcircuito integrado) para producirlo. El código RISC del Núcleo seguirá intentando controlar los RTOS mientras espera que el secuenciador 42 se complete. Deben estar presentes algunos fragmentos de usuario para manejar esas funciones.
F. Carga del Applet de Carga Automática del VersaCrypt Se hará un intento por cargar el applet de carga automática del VersaCrypt desde cualquiera de una ROM externa 142 o el conductor colectivo PCI 78. Todos los applets de carga automática del VersaCrypt, aún de una ROM de 32 bits 142, serán copiados en la DMEM 18 antes de la ejecución. Puede utilizarse una ROM externa 142 para iniciar los sistemas sin el conductor colectivo PCI 78, para pruebas, para diagnósticos o unidades regresadas, para la depuración, etc. Su presencia puede ser detectada por la primera mitad de un patrón bien conocido aún desplazamiento fijo (bloque 188) . Si no está presente la ROM externa 142 (bloque 188) , entonces el aparato 10 intenta iniciar sobre el conductor colectivo PCI 78 (bloque 190) . Específicamente, primero espera que un SCB sea ajustado (se vuelve diferente de 0) del anfitrión PCI (bloque 190) . A continuación lee el bloque especificado en el SCB y en la SDRAM. Si la primera mitad del patrón no es igual (bloque 192) , entonces ocurre un error fatal (bloque 14) y el control regresará al bloque 146. Si ocurre una similitud (bloque 192) entonces escribirá de nuevo en el SCB después del desplazamiento de 8 del número de serie el índice de EMK de exportación/importación de programas y sistemas de programación para el_aparato 10 de la EEPROM 32 (bloque 196) . Si la segunda mitad del patrón no es igual (bloque 198), entonces ocurre un error fatal (bloque 200) . A diferencia de otros applets VersaCrypt, el applet de carga automática se ejecuta con_ interrupciones desactivadas. Esto se debe en parte al sistema ie arranque, y puede necesitar explícitamente reajustar algunos dispositivos externos antes de detener el envío de una interrupción, lo cual está más allá del alcance del Núcleo Seguro. Se asume que este applet VersaCrypt manejará la carga del cargador automático de la imagen de inicio real. Para de este modo simplificar el Núcleo Seguro y para permitir que el formato de la imagen de inicio se adapte a aplicaciones específicas, y posiblemente cambie si se encuentran nuevos requerimientos. Parte de esta operación incluye asignar ciertos valores iniciales en lugares bien definidos en la memoria relacionados con las funciones seguras tales como los applets VersaCrypt. La operación típica del applet de arranque automático VersaCrypt es como sigue: (1) iniciación del ambiente VersaCrypt y cargax los applets VersaCrypt y la información de autentificación; (2) cargar y verificar la manipulación Indebida de los programas y sistemas de programación del usuario; (3) inicializar el CSPRNG; (4) inicializar varias variables seguras y del usuario que son- utilizadas para controlar la configuración del núcleo seguro para el uso del sistema; y (5) controlar entonces el paso al código del modo de usuario, con interrupciones desactivadas. Todos los registros son limpiados. Las interrupciones se desactivan como parte del arranque del sistema, por lo que puede ser necesario" probar explícitamente algunos dispositivos externos antes de detener el envío de una interrupción, lo cual está más allá del alcance del núcleo seguro. Los registros son limpiados para proteger material posiblemente sensible ,que pueda ser dejado en ellos durante el arranque del sistema. Los programas y sistemas de programación del usuario tendrán que inicializar _ ciertos lugares bien definidos en la memoria relacionado con funciones inseguras tales como manej adores o administradores de interrupción y apilamientos .
Proceso de Interrupción (y Conmutación de Contexto) El proceso de despachar un manej ador de interrupción y regresar de las interrupciones sé muestra en la Figura 8.
A. Procesamiento de Interrupción Todos los manej adores de interrupción son ejecutados en el modo de usuario, a través de una tabla de manej adores proporcionados al usuario. El regreso de una interrupción es vía una llamada de sistema. Aunque existe una pila de interrupción separada (de acuerdo a lo requerido por el VersaCript, y también cada tarea necesaria para asignar suficiente espacio de pila para interrupciones anidadas) , cuando cada tarea define sus necesidades de _ tener bites adicionales asignados de espacio de pila utilizados para la conmutación de contexto. El contexto es guardado en la pila por una variedad de razones. Esto simplifica, "conmutaciones de contexto sustitutivas, puesto que puede ser activado desde una rutina de interrupción del temporizador que debe ya haber guardado un contexto parcial en la pila. El Núcleo Seguro sería el lugar lógico para "esperar esto, debido a que la rutina del usuario tendría que trabajar alrededor de los registros guardados por la parte que maneja la interrupción del Núcleo Seguro. El Núcleo Seguro también tendría que tener esta funcionalidad para el _ VersaCript, y en efecto se ejecutaría más rápido puesto que la ROM interna 14 es más rápida que la SDRAM externa 24 de lo que podría ejecutarse el código de usuario. La colocación del contexto en la pila es más conveniente, puesto que todas las tareas deben tener sus propias pilas, como lo tendrá el VersaCript. También, de esta manera, el Núcleo Seguro no requiere ningún conocimiento de los bloques de control de tareas de los RTOS subyacentes u otras estructuras de datos. Únicamente el indicador de la pila guardado sería necesario sería necesario guardar en el bloque de control de tareas. Cambiar el contexto para el Núcleo Seguro únicamente permitiría guardar los registros restantes (para el Código de Usuario) en la pila, cambiando los indicadores de la pila, y restableciendo todo el contexto (como "se hace siempre para el VersaCript) .
B. Pilas de Interrupción Para la seguridad del sistema, cuando las interrupciones están activadas (o cuando se hacen llamadas de sistema) , el código de modo de usuario debe tener una pila de espacio de usuario, y el código del modo del Núcleo debe tener una pila de espacio de Núcleo. Además, el código del modo de Núcleo no puede funcionar con interrupciones activadas desde un manejador de interrupciones. Esos requerimientos están presentes debido a que, bajo esas" circunstancias, podemos necesitar guardar el contexto actual en la pila. Si el usuario tenía una pila de Núcleo, podría utilizarla para tener acceso a los recursos de espacio del Núcleo cuando su contexto sea guardado. Si el Núcleo tenía una pila de usuario, su seguridad podría verse comprometida desde una rutina de interrupción que podría leer y modificar su contexto guardado. Y finalmente el límite sobre el modo del Núcleo de una rutina de interrupción es el límite del número de contextos de Núcleo que deben ser almacenados en la DMEM 18 concurrentemente. El Núcleo Seguro tiene un número de contextos que debe mantener. Cada applet VersaCript tiene un contexto sobre su propia pila, ya sea en la DMEM 18 (únicamente para el applet VersaCript cargado actualmente) o encriptado en la SDRAM 24 externa. El Núcleo Seguro también debe tener un segundo contexto que es utilizado mientras" se efectúan operaciones de exportación/importación. También tienen un tercer contexto para manejar llamadas de sistema que no pueden ser adquiridas, pero que funcionan con interrupciones activadas debido al tiempo que les tome ejecutarse, para reducir al mínimo la latencia de interrupción del sistema. Esas llamadas de sistema no pueden ser adquiridas debido entre a otras cosas a que requerirían múltiples contextos en la DMEM 18, uno por cada tarea que puedan ser efectuada por una llamada de sistema al mismo tiempo. Este tercer contexto también es usado ¡1 cuando se usan ciclos de robo para ayudar a las operaciones de Exportación/Importación del VersaCript cuando se regresa de interrupciones o se efectúan cambios o conmutaciones de contexto. Cuando el código de modo de Núcleo (applets VersaCript o el Núcleo Seguro) está funcionando, el sistema guarda y limpia todos los registros (esto protege y oculta datos sensibles) , antes de pasar el control a la rutina de interrupción. Esto produce una latencia de interrupción de 4-5 µS (sin incluir ningún tiempo cuando las interrupciones están desactivadas, como la mayoría de llamadas de sistema, o uso de conductores colectivos por la dma) . Puesto que los programas y sistemas de programación en tiempo real deben ser capaz de sobrevivir a este intervalo de tiempo de una latencia de interrupción, para simplificar la escritura de los manej adores de interrupción, el Núcleo guardará un contexto parcial en la pila cuando el código de usuario se interrumpa. Este será aún más rápido que el modo de Núcleo, pero deberá ser más de lo suficiente para el procesamiento de interrupción.
C . Conmutación de Contexto Cuando se regresa de una interrupción, el Núcleo Seguro verifica algunas variables globales utilizadas para indicar que es necesaria una conmutación de contexto sustitutivo. Esta incluye la dirección de donde deberá ser guardado el indicador de .la pila actual (presumiblemente un desplazamiento en el bloque de control de tareas de la tarea actual) y la dirección de donde puede ser cargado el indicador de la pila nueva para restablecer el contexto (presumiblemente del bloque de control de tareas de la siguiente tarea) . Cuando ocurre esta adquisición, guarda el resto del contexto de la pila (para las tareas del usuario) y restablece todo el contexto de la pila (como siempre lo hace para el Núcleo) .
D . Soporte del VersaCript Antes de regresar de una interrupción y cuando se efectúa una conmutación de contexto, el Núcleo Seguro puede efectuar unas operaciones limitadas (tiempo limitado de uso) asociadas con las operaciones de exportación/importación del VersaCript, tales como copiar un bloque de memoria y programar applets del secuenciador del" Núcleo. Esto puede diferir la conmutación del contexto sustitutivo un pequeño retraso, aunque no tendrá un impacto serio sobre el funcionamiento del sistema.
Este no afecta la latencia de interrupción, puesto que esas operaciones son ejecutadas con interrupciones activadas.
Existe una sola tarea del Núcleo que será la ejecución de la rutina de usuario por —el Núcleo o compartida entre todos los applets VersaCript y el Núcleo Seguro. El indicador de la -pila guardado es un valor falso (todos 1) , en lugar de exponer el valor real o que permita a los programas y sistemas de programación del usuario cambiarlo. Los indicadores de pila reales son guardados en la DMEM 18 o encriptados en la SDRAM 24 externa para los applets VersaCript exportados. Esta tarea simple da a los applets VersaCript una prioridad menor, pero que sería el caso de cualquier manera debido al gran atraso asociado con la exportación del applet viejo con sus datos, y la importación del applet nuevo con sus datos. Existe únicamente una sola tarea para todas las tareas del Núcleo, debido a que únicamente un applet VersaCript podría funcionar en ese momento, puesto que los otros están encriptados en la memoria externa 24, y también debido a que Núcleo Seguro únicamente necesita ejecutarse a nombre de algunas otras tareas. - Para la velocidad de ejecución, si el applet a funcionar está actualmente cargado, no será exportado__ y reimportado, sino que funcionará como tal. Si el applet que está actualmente funcionando o siendo ejecutado tiene segmentos de datos que son necesarios para que el applet sea cargado, los segmentos de datos serán exportados y reimportados, para simplificar el Núcleo Seguro. Para soportar la programación sustitutiva del VersaCript, los ROS deben fijar un indicador global para solicitar transferencias de VersaCript. Esto puede efectuarse fácilmente a partir de la rutina de interrupción del temporizador RTOS. El algoritmo que es utilizado para efectuar la programación del VersaCript es para verificar la transferencia del VC cada vez que se efectúa una conmutación de contexto a la tarea del Núcleo al modo de Núcleo. Si (1) se solicita una transferencia de VersaCript, (2) existe otro applet VersaCript esperando en la fila de espera de ejecución de VersaCript, (3) se permite la transferencia del VersaCript, entonces iniciará una operación de exportación/importación en - lugar de ejecutar el applet VersaCript pendiente. La mayoría de las operaciones implicadas en una operación de exportación/importación tienen que hacerse cargando los applets del secuenciador del Núcleo y programándolos para ejecutarse. El secuenciador es responsable de la encriptación y autentificación real. Puesto que esas operaciones pueden ser completadas en una pequeña cantidad de tiempo, los ciclos son robados para efectuar esas operaciones cuando regresan de las interrupciones y se efectúan conmutaciones de contexto. A las operaciones restantes les toma más tiempo completarse y también se ejecutan desde la tarea del Núcleo. Esas operaciones son copiar bloques entre la DMEM 18 y la SDRAM 24, y limpiar las memorias inmediatas. Debido a este método, existe un retraso de programación de tres rondas asociado ,con las transferencias de VersaCript. El uso de esos tres retrasos de programación son: 1) copiar de la DMEM 18 a la SDRAM 14 después de efectuar la exportación, e iniciar la importación; 2) verificar la importación del applet, limpiar la memoria inmediata de instrucciones, e"""iniciar la importación de segmentos de datos; y 3) verificar la importación de segmentos de datos, limpiar la memoria inmediata de datos, e iniciar la ejecución del applet.
E . Exportación/Importación del VersaCrypt Los propósitos de los bloques de control del VersaCrypt son almacenar applets VersaCrypt y segmentos de datos en la memoria externa; para administrar las llamadas al VersaCrypt del usuario; y mantener la fila de espera de ejecución del VersaCrypt. Para poder tomar ventaja de las rutinas comunes en el Núcleo Seguro, los applets son tratados como casos especiales de segmentos de datos .
El formato de los bloques de control del VersaCrypt en la memoria externa 24 es: Bits Campo Descripción 32 Enlace Este se usa para colocar el applet VersaCrypt en la fila de espera de applets VersaCrypt que están actualmente esperando ser ejecutados . 32 No Usado 0 64 Fila de Espera Cabeza y cola de la fila de espera de peticiones para un applet VersaCrypt dado.
[La Verificación de la Manipulación Indebida comienza aquí] 16 ID ID única diferente -de cero para cada bloque. 16 Tamaño Tamaño (en bloques DES de 64 bits, diferentes de cero) de la sección encriptada 16 No Usado 0 16 Indicadores Esos indicadores son utilizados por el sistema para distinguir el applet contra un subapplet contra segmentos de datos, y el estado de ejecución de los applets.
[La encriptación comienza aquí, triple clave, triple DES O-CBC] 64 PreBlanco Este es un valor aleatorio que es entre XORed con todo el texto plano antes de la encriptación. Este valor cambia con cada exportación. 64 PortBlanco Este es un valor aleatorio que es XORed con todo el texto cifrado después de la encriptación. Este valor cambia con cada exportación. 64n Datos Estos son cualquiera del applet VersaCrypt (descrito más adelante) , o el segmento de datos. 64 Suma de Esta es alguna suma de verificación Verificación encriptada u otra región de manipulación indebida verificada a través de los datos. [No necesariamente almacenada aquí, como se describe más adelante] . El aparato 10 utiliza una sola DES CBC-MAC. El campo PreBlanco es la clave DES para esta operación, puesto que la elección de la clave no sería una preocupación de seguridad. El IV será el campo de PreBlanco, únicamente con sus palabras transferidas. El aparato 10 utiliza el blanqueo para reforzar el material clave, puesto que el proceso de exportación proporciona a un atacante una gran cantidad de texto cifrado. Esto también significa que cada vez que un bloque sea exportado, todos los datos son cambiados, negando a los sabelotodo o entrometidos información acerca de que datos están cambiando o como ciertas operaciones de toma. También protege contra ataques de texto plano conocido puesto que el inicio de todos los applets VersaCrypt será- casi constante. Y finalmente, también protege contra ataques de texto plano elegido adaptables, donde los sabelotodo o entrometidos pueden elegir los valores que "pasan al aparato 10 y hacer que un applet sea exportado inmediatamente después de cargar sus parámetros . Opcionalmente, el VersaCrypt puede cambiar su material clave por cada exportación de VersaCrypt para reforzar aún más la seguridad y limitar el tiempo de vida de la clave. El aparato 10 también protege contra ataques de datos caducos (esto es similar a un ataque de datos reejecutado en redes) , donde un valor viejo de un bloque VersaCrypt es dado nuevamente a un tiempo posterior limitando el número de bloques de VersaCrypt, de modo que las sumas de verificación por cada bloque puedan ser mantenidas en la DMEM 18 y comparadas al momento de la carga. El límite para los bloques del VersaCrypt (applefs + subapplets + segmentos de datos) , es de 32 bloques, o 256 bytes en el aparato ilustrado 10.
F. ID del Bloque del VersaCrypt Las ID del bloque del VersaCrypt pueden ser cualquier valor de 16 bits, diferente al valor reservado de"0. La única restricción es que los 5 bits inferiores de la ID deben ser únicos para un sistema dado, puesto que son utilizados como un índice en las diferentes tablas de los bloques del VersaCrypt.
G. Tipos de Bloques del VersaCrypt Existen tres difexentes tipos de bloques del VersaCrypt, a saber segmentos de datos, applets VersaCrypt, y subapplets VersaCrypt. Los segmentos de datos son utilizados para almacenar datos que pueden ser compartidos entre applets VersaCrypt. Ellos pueden ser exportador/importados por los applets VersaCrypt y no son utilizables por el código de usuario. Los applets VersaCrypt son funciones del VersaCrypt que pueden ser llamadas por el usuario. Ellas son llamadas vía una llamada de sistema que inserta un bloque de control de llamada en la fila de espera en el bloque de control del VersaCrypt, e inserta el applet VersaCrypt en la fila de espera de ejecución de VersaCrypt (si no está ya presente) . Los subapplets VersaCrypt son applets VersaCrypt, excepto que únicamente son llamados por otros applets VersaCrypt, y nunca por el usuario directamente. Ellos son utilizados para segmentar applets grandes en secciones más pequeñas, aunque a un retraso de exportación/importación mayor. En muchos casos, el término applet VersaCrypt se utiliza para referirse colectivamente a ambos applets VersaCrypt y subapplets VersaCrypt. La única distinción real es sobre cuales de ellos se pretende sean llamados, como se describe más adelante. Los applets VersaCrypt son llamados como subrutinas utilizando conversiones de llamada C normales y deben absorber el uso de registros C estándar. Sus indicaciones de pila son inicializados al final del bloque del applet, y tienen su parámetro disponible. Los applets VersaCrypt deben guardar todos los registros no temporales que usan, al igual que cualquier otra función C, puesto que algunos de ellos serán utilizados para almacenar información de enlace del VersaCrypt .
H . Segmento de Datos VersaCrypt Los segmentos de datos son manejados por applets VersaCrypt vía cuatro llamadas de sistema para importar y exportar un segmento de datos y para crear y suprimir segmentos de datos. Un applet VersaCrypt puede tener tantos como ocho segmentos de datos cargados a la vez, y debe descargar -explícitamente ellos cuando finalice (excluyendo el parámetro de los subapplets VersaCrypt). Cuando ellos con cargados (importados) su formato es el mismo que en la memoria externa (región verificado contra manipulación indebida a través de los datos), excepto que no están encriptados . No excéntrico válido conservar instrucciones ejecutables en un segmento de datos VersaCrypt, y la memoria inmediata de instrucciones no es limpiada cuando los segmentos de datos VersaCrypt sean importados. Esto es posible de hacer, de modo que los segmentos de datos sean creados e inicializados al momento de su creación, y cargados con los applets en la imagen de inicio de modo que el código de inicialización no sea necesario en el applet. También es posible hacer que un applet cargue " automáticamente sus segmentos de datos de modo que no sea necesario —cargarlos y descargarlos explícitamente, y que sepan cargar en una dirección bien conocida. Los applets VersaCrypt son responsables de cuidar que cualesquier semáforos para "el acceso compartido a los datos en un segmento de datos, si múltiples applets VersaCrypt están desplazándose para tener acceso a los mismos datos. Ellos pueden utilizar el indicador de desactivación de adquisición del VersaCrypt para esta función, siempre que no afecte de manera adversa la programación del VersaCrypt.
I . Applet VersaCrypt Los applets VersaCrypt son llamados solo vía una llamada del sistema. Esta llamada de sistema pone en la fila de espera la Llamada CB en la fila de espera para ese applet VersaCrypt, y, si esta es la primera entrada, agrega el applet VersaCrypt al final de la fila de espera de ejecución del VersaCrypt. El programador comparte la CPU 54 (16) entre múltiples tareas, una de las cuales es la única tarea del núcleo. La tarea del núcleo a su vez comparte sus ciclos entre funciones de usuario, el núcleo seguro, y todos los applets VersaCrypt que están ya siendo ejecutados. Puesto que los applets VersaCrypt pueden ser adquiridos, un solo applet que sea ejecutado durante un tiempo prolongado (tal como RSA) no conserva otras tareas de usuario o applets VersaCrypt en ejecución. Cuando es introducido un applet VersaCrypt, este tiene la Llamada CB como su único parámetro. De manera preferible, cualquier tarea confiable, tal como un applet VersaCrypt se divide en una tarea de usuario insegura que llama al applet VersaCrypt seguro. Por ejemplo, los programas - sistemas de programación de acceso condicional pueden tener una porción de usuario (que incluye un manej ador de interrupción para hablar con la tarjeta inteligente) que hace llamadas de VersaCrypt que generan la petición para, asi como, procesar los resultados de la tarjeta inteligente. La porción del usuario podría también manejar el paso de mensajes, semáforos y llamadas periódicas si es necesario. El VersaCrypt no puede ocultar los eventos externos que hacen que sea invocada una tarea segura, "pero en su lugar ocultará el procesamiento del evento.
J. Sub Applets VersaCript Los sub applets VersaCript son iguales que los applets regulares, pero son utili-zados para romper cualquier applet VersaCript que exceda los límites de la memoria. Ellos pueden ser llamados únicamente una llamada de sistema del núcleo, y no pueden ser llamados directamente por los programas y sistemas de programación del usuario. Cuando son llamados por un applet (o sub applet) , VersaCript, el invocador se bloquea y el sub applet empieza a ejecutarse. Si un sub applet está ya ejecutándose cuando es llamado, se activa una alarma (esta evita compartir rutinas entre los applets, en la mayoría de los casos y ciertos tipos de recursión) . Los sub applets no son reintroducidos . El invocador pasa la Par ID (la cual es la ID de un segmento de datos), y cuando el sub VersaCript es introducido, tiene un indicador de ese segmento de datos como su único parámetro. El segmento de datos es utilizado para pasar parámetros y regresar resultados .
K. Verificaciones de Conmutación de Contexto. Cuando el Núcleo Seguro efectúa una conmutación de contexto a una sola tarea del Núcleo, efectúa las siguientes verificaciones véase la Figura 9) : 1. Si el indicador de Solicitud de Adquisición de VersaCript está activo, y el indicador de Desactivación de VersaCript está limpio, la fila de espera de ejecución VersaCript no está vacía entonces a) se activa el indicador de desactivación de adquisición de VersaCript; b) se guarda el indicador de pila actual, para exportar; c) se carga el indicadox de pila de exportación/importación del Núcleo Seguro; d) se activan las interrupciones (bloque 210) . Una tarea de Núcleo Seguro está ahora siendo ejecutada concurrentemente para efectuar operaciones de exportación/importación. Si un applet está actualmente cargado (bloque 212) y no es applet deseado (214), es exportado. Específicamente, si el applet no ha finalizado la ejecución (bloque 216), es agregado al fin de la fila de espera de ejecución (bloque 218) . Por cada segmento de datos cargado, y entonces por el applet en sí: a) se genera el valor de blanqueo aleatorio para la exportación; b) se calcula y guarda el MAC en la tabla en la DMEM 18; c) el bloque es encriptado con el blanqueo; y d) el applet blanqueado, encriptado, es copiado de la DMEM 18 en la SDRAM 24 (bloque 220) . El siguiente applet es entonces removido de la parte superior de la fila de espera de VersaCript (bloque 222) .
Si el applet no está actualmente cargado (bloque 212), es importado -(bloque 222). Específicamente, el applet importado y cada uno de sus segmentos de datos son: a) copiado de la SDRAM 24 a la DMEM 18; b) desencriptados con blanqueo; c) la MAC para el bloque desencriptado es calculada y comparada con el valor en la tabla DMEM 18; d) son verificados los indicadores, (es decir para asegurarse de que los bloques sean del tipo esperado, etc.); e) si el applet importado es un sub applet que no está siendo ejecutado actualmente, el primer segmento de datos en su tabla es reemplazado con su parámetro, del lado que sea cargado; f) la validez del mapa del segmento de datos para los applets y los sub applets es verificada; y g) las memorias inmediatas de instrucciones y datos son limpiadas. Si, por otro lado, el applet está arrancando (bloque 214 y bloque 224), su contexto es inicializado: i) su indicador de pila guardado es activado; ii) su parámetro es colocado en la llamada CB puesta en la fila de espera (para los applets) o el segmento de datos (para los sub applets) ; iii) su registro de retorno ($31) es activado para indicar al código en el Núcleo Seguro para manejar la conclusión del applet (esto también requerirá salvas la Llamada CB (para applets) o la ID llamada del applet (para los sub applets) ) ; iv) sus indicadores son actualizados, (es decir, que este se está ejecutando ahora) (bloque 226) . Sin importar cuales de las tres situaciones anteriores se presente (es decir, applet actualmente cargado, applet actualmente no cargado, o applet cargado y arrancando) , el control a continuación desactiva las interrupciones; restablece el indicador de la pila guardado; y limpia el indicador de desactivación de adquisición VersaCript y el indicador de petición de adquisición de VersaCript (bloque 228). El control restablece entonces el contexto de Núcleo, y entra al modo de Núcleo. [Si los applets VersaCript no pueden ser ejecutado, este será un ciclo que mantiene la llamada de los RTOS para que permanezcan inactivos durante un tic tac] .
. Formato de la Sección de Datos del Applet VersaCrypt El formato de la sección de datos de un applet VersaCrypt es: Bits Campo Descripción 32 SP Indicador de pila guardado - utilizado cuando el VersaCrypt es exportado , 8x32 Dsmap Este es el mapa de segmentos de datos que están actualmente cargados. Los primeros 16 bits de cada segmento son la ID del segmento. Los segundos 16 bits es una desviación de la ID están cargados. Los segmentos se almacenan haciendo disminuir la desviación, con cualesquier entradas no utilizadas (todas 0) al final. 32n Applet Este es el applet VersaCrypt: y textos, datos, Bss, y pila. El Bss y la pila son inicialmente Os. El punto de entrada al applet VersaCrypt es el inicio de esta sección, y la pila trabajará hacia abajo del fin de esta sección.
M. Formato del Bloque de Control de Llamadas del Applet VersaCrypt El propósito del bloque de control de llamadas del applet VersaCrypt (Llamada CB) es tener una interfaz o interconexión bien definida para hacer peticiones de usuario de VersaCrypt. Las Llamada CB permite peticiones asincrónicas, de modo que los programas y sistemas de programación del usuario no necesiten esperar una programación relativamente lenta de los applets VersaCrypt, y puedan poner en la fila de espera múltiples peticiones. Puesto que se cosechan muchos problemas de seguridad en la interfaz o interconexión entre dos tareas que se están ejecutando a diferentes niveles de seguridad, esta ínterfaz simplificada ayuda a reducir al mínimo el área donde pueden ocurrir ciertos tipos de problemas de seguridad. El formato del bloque de control de llamadas del applet VersaCrypt es: Bits Campo Descripción 32 Enlace Para agregar la llamada CB a la fila de espera de peticiones para este applet. 32. Llamada de Una rutina de usuario para llamar Regreso cuando el applet está completo. Esta rutina de regreso de llamada es pasada a la Llamada CB. n Parms Son cualesquier parámetros pasados al applet y un espacio para regresar - . cualesquier resultados. Aunque su tamaño es específico para cada applet, se recomienda fuertemente que sea limitado. Por razones de seguridad, es importante que los parámetros sean copiados en la DMEM al inicio de la petición y que los resultados sean copiados nuevamente al final de la petición. Esto se debe a la naturaleza insegura de la memoria externa o el acceso a ésta.
Verificación de Manipulación Indebida Además de las diferentes características de verificación de manipulación indebida descritas anteriormente, el aparato 10 implementa además un método para verificar la manipulación indebida del circuito integrado. El método es implementado tras la detección de un evento de reajuste. Cuando es detectado tal evento, el procesador 54 (16) es mantenido en un estado de reajuste de modo que no pueda tenerse acceso a la EEPROM 32. No puede tenerse acceso a la EÉPROM 32 cuando el procesador 54 (16) sea mantenido en un estado de reajuste debido a que el procesador debe iniciar todos los accesos a la EEPROM. En el aparato ilustrado 10, todos los posibles circuitos que incluyan memorias son probados por una BIST (Autoprueba Incorporada) . El procesador 54 (16) es mantenido en el estado de reajuste durante la ejecución de esas pruebas. El procesador 54 (16) es liberado únicamente del estado de reajuste si los elementos probados respectivamente pasan las pruebas BITS. Si cualquiera de los elementos probados no pasa sus pruebas respectivas, se asume que el aparato 10 ha sido manipulado de manera indebida y el procesador 54 (16) es mantenido en el estado de reajuste de modo que no pueden ser ejecutadas instrucciones adicionales, de modo que no ocurre el inicio, y de modo que no puede ocurrir la exposición de información sensible. Puesto que el procesador 54 (16) es mantenido en el estado de reajuste a través de este proceso, debe proporcionarse un dispositivo adicional para implementar este método de verificación de manipulación indebida. En la modalidad ilustrada, el método de verificación de manipulación indebida es efectuado por los circuitos guardianes 88 (véase la FIGURA 3) . De este modo, el método de verificación de manipulación indebida es preferiblemente implementado por los componentes físicos de" computación y es efectuado cada ve que ocurre una condición de reajuste. _ Los expertos en la técnica apreciarán que, además de que el reajuste es utilizado como activador de la prueba BIST, podrían ser utilizados otros eventos, (por ejemplo eventos que ocurran periódicamente), como activadores sin apartarse del alcance o espíritu de la invención. Si son utilizados eventos periódicos como activadores, el aparato preferiblemente se aislará y probará la posibilidad de los elementos afectados. Además, los expertos en la técnica apreciarán fácilmente que, además de (o en lugar de) mantener el procesador en un estado de reajuste, pueden ser utilizadas otras respuestas de manipulación indebida sin apartarse del alcance o espíritu de la invención. Además, el procesador puede ser utilizado para iniciar y/o ejecutar sin apartarse del alcance o espíritu de la invención. Deberán notarse los siguientes detalles relacionados con la modalidad preferida de la invención. Primero, en la modalidad preferida, el aparato 10 es ímplementado en una sola matriz. — También en la modalidad preferida, el procesador 16 tendrá un modo de operación de núcleo que prohibe a los programas y sistemas de progxamación del usuario tener acceso a secciones del espacio de dirección, y efectuax operaciones privilegiadas. Tercexo, todos los conductores colectivos maestxos laterales del procesador 16, es decir, en la DMA, tendrán una vista limitada. De manera preferible, no se permiten conductores colectivos maestros externos. Además, el mapa de dirección deberá ser definido de modo que todos los dispositivos periféricos seguros caigan en el espacio de dirección del núcleo, y de modo que todos los otros dispositivos periféricos caigan en el espacio de dirección del usuario. Además, como será apreciado por aquellos expertos en la técnica, el sistema podría contener cualesquier dispositivos periféricos específicos estándar o de aplicación deseados, sin apartarse del alcance o espíritu de la invención. Además, como será apreciado por los expertos en la técnica, a través de la modalidad preferida, se toma una postura hostil con respecto a todos los recursos externos y parámetros suministrados por el usuario. Debe esperarse que tales recursos cambien sin que se note a tiempos inesperados como resultado de ataques. Deberá considerarse que los accesos regulares proporcionan información de ataques estadísticos. Todas las direcciones deben ser verificadas para determinar su validez antes de su uso, y todos los valores deben ser copiados a memorias internas antes de su autentificación y/o uso. Aunque han sido descritas ciertas caxacterísticas de las enseñanzas de la invención aquí, el alcance de la cobextura de esta patente no se limita a éstas. Por el contrario, esta patente cubre todas las características de las enseñanzas de la invención que caigan dentro del alcance de las reivindicaciones anexas ya sea literalmente o bajo doctrinas equivalentes. Se hace constar que con relación a esta fecha, el mejor método conocido por la solicitante para llevar a la práctica la citada invención, es el que resulta claro de la presente descripción de la invención.

Claims (42)

  1. REIVINDICACIONES
  2. Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes reivindicaciones . 1. Un aparato para proporcionar un ambiente de procesamiento seguro, caracterizado porque comprende: una memoria de lectura/escritura para almacenar información; un primer procesador que coopera con la memoria de lectura/escritura para leer información de la misma y escribir información a la misma; un cifrador o codificador en comunicación con la memoria de lectura/escritura, un cifrador "O codificador está configurado para desencriptar selectivamente información encriptada en información desencriptada y para entregarla información desencriptada a la memoria de lectura/escritura para su uso posterior por el primer procesador; y un autentificador para autentificar la información desencriptada antes de su uso por el primer procesador . 2. El aparato de conformidad con la reivindicación 1, caracterizado porque el autentificador reautentifica la información desencriptada recibida de la memoria de lectura/escritura y el cifrador está configurado para encriptar selectivamente la información reautentificada, desencriptada en información reencriptada.
  3. 3. El aparato de conformidad con la reivindicación 2, caracterizado porque el cifrador regresa la información reencriptada a la memoria de lectura/escritura para su exportación posterior al dispositivo de almacenamiento.
  4. 4. El aparato de conformidad con la reivindicación 2, caracterizado porque el cifrador reencripta la información reautentificada, desencriptada de modo que esta difiere de su forma encriptada original para enmascarar la información de la modificación-.
  5. 5. El aparato de conformidad con la reivindicación 4, caracterizado porque el cifrador emplea el ciclaje de la clave para enmascarar la información de la modificación. " ""
  6. 6. El aparato de conformidad con la reivindicación 4, caracterizado porque el cifrador emplea un proceso de blanqueo para enmascarar la información de la modificación, donde el proceso de blanqueo emplea una clave de blanqueo, y donde la clave de blanqueo es ciclada.
  7. 7. El aparato de conformidad con la reivindicación 2, caracterizado porque los datos de autentificación empleados para reautentificar la información desencriptada antes de la reencriptación son almacenados en la memoria de lectura/escritura para su uso posterior en la autentificación de la información desencriptada .
  8. 8. El aparato de conformidad con la reivindicación 2, caracterizado porque comprende una memoria externa para almacenar selectivamente la información reencriptada.
  9. 9. El aparato de conformidad con la reivindicación 1, caracterizado porque el primer procesador tiene un modo de operación de núcleo y un modo de operación de usuario, el modo de núcleo y el modo de usuario definen células de seguridad separadas.
  10. 10. El aparato de conformidad con la reivindicación 9, caracterizado porque el primer procesador ejecuta programas y sistemas de progxamación no seguros en el modo de operación de usuario y programas y sistemas de programación seguros en el modo de operación del núcleo.
  11. 11. El aparato de conformidad con la reivindicación 1, caracterizado porque comprende un segundo procesador, el segundo procesador está en comunicación con el cifrador y con la memoria de lectura/escritura para iniciar de manera selectiva por lo tanto la desencriptación y reencriptación de la información almacenada en la memoria de lectura/escritura . z.
  12. 12. El aparato de conformidad con la reivindicación 11, caracterizado porque el cifrador comprende el autentificador.
  13. 13. El aparato de conformidad con la reivindicación 1, caracterizado porque la información encriptada comprende instrucciones de procesador encriptadas.
  14. 14. El aparato de conformidad con la reivindicación 1, caracterizado porque la información encriptada comprende datos encriptados.
  15. 15. El aparato de conformidad con la reivindicación 1, caracterizado porque la información encriptada está segmentada en secciones.
  16. 16. El aparato de conformidad con la reivindicación 15, caracterizado porque cada una de las secciones es encriptada y autentificada independientemente.
  17. 17. El aparato de conformidad con la reivindicación 1, caracterizado porque comprende además una memoria no volátil y un circuito lógico para controlar el acceso a los datos contenidos en la memoria no volátil, el circuito lógico tiene acceso a la memoria no volátil para determinar si los datos contenidos en la memoria no volátil comprenden datos confidenciales analizando una propiedad inherente a los datos a los que tiene acceso. ""
  18. 18. El aparato de conformidad con la reivindicación 17, caracterizado porque el circuito lógico determina si los datos contenidos en la memoria no volátil comprenden datos confidenciales identificando bloques de datos en los datos a los que se tiene acceso que tienen una característica predeterminada, contando los bloques de datos identificados, y comparando el conteo de un valor umbral.
  19. 19. El aparato de conformidad con la reivindicación 18, caracterizado porque cada uno de los bloques de datos comprende un bit, y la característica predeterminada comprende un estado lógico predefinido.
  20. 20. El aparato de conformidad con la reivindicación 18, caracterizado porque cada uno de los bloques de datos comprende una pluralidad de bits, y la característica predeterminada comprende un valor binario que cae dentro de un intervalo de valores binarios .
  21. 21. El aparato de conformidad con la reivindicación 17, caracterizado porque circuito lógico comprende el primer procesador.
  22. 22. El aparato de conformidad con la reivindicación 17, caracterizado porque comprende además un circuito de aislamiento de claves que conecta directamente el circuito lógico al cifrador.
  23. 23. El aparato de conformidad con la reivindicación 22, caracterizado porque la memoria no volátil almacena una clave, y el circuito de aislamiento de claves entrega la clave al cifrador.
  24. 24. El aparato de conformidad con la reivindicación 22, caracterizado porque el circuito lógico, el circuito de aislamiento de claves y el cifrador definen un sistema cerrado.
  25. 25. El aparato de conformidad con la reivindicación 1, caracterizado porque el primer procesador, la memoria de lectura/escritura, y el cifrador están incluidos en un circuito integrado.
  26. 26. El aparato de conformidad con la reivindicación 25, caracterizado porque el circuito integrado incluye pernos para conectar el aparato a los dispositivos externos, y porque comprende un circuito silenciador para desactivar selectivamente los pernos para evitar revelar información sensible fuera del ambiente seguro.
  27. 27. El aparato de conformidad "con la reivindicación 25, caracterizado porque_ comprende además un circuito guardián adaptado para verificar la manipulación indebida del circuito integrado.
  28. 28. El aparato de conformidad con la reivindicación 25, caracterizado porque comprende además una entrada para recibir selectivamente información encriptada de una fuente externa.
  29. 29. El aparato de conformidad con la reivindicación 25, caracterizado porque comprende además una unidad de administración de memoria que coopera con el primer procesador para mantener una pluralidad de celdas de seguridad.
  30. 30. El aparato de conformidad con la reivindicación 1, caracterizado porque el cifrador comprende un criptomódulo.
  31. 31. El aparato de conformidad con la reivindicación 1, caracterizado porque la autentificación de la información "desencriptada es efectuada autentificando la información encriptada correspondiente.
  32. 32. El uso de una memoria externa para almacenar información encriptada, la memoria externa tiene una primera capacidad de almacenamiento, un circuito integrado para proporcionar un ambiente de procesamiento seguro, que comprende: una memoria volátil que tiene una segunda capacidad de almacenamiento, la segunda capacidad de almacenamiento es menor que la primera capacidad de almacenamiento; medios de importación/exportación para importar y exportar selectivamente información encriptada entre la memoria externa y la memoria volátil; medios cifradores o codificadores para desencriptar información encriptada recibida de la memoria volátil en información desencriptada dentro del ambiente seguro y para encriptar y desencriptar información nuevamente en información encriptada dentro del ambiente seguro; y un procesador para procesar la información desencriptada dentro del ambiente seguro, el procesador coopera con los medios de importación/exportación para importar y exportar de manera selectiva información desencriptada entre la memoria externa y la memoria volátil para evitar que se exceda la segunda capacidad de almacenamiento .
  33. 33. El circuito integrado de conformidad con la reivindicación 32, caxacterizado porque los medios cifradores encpptan información, de modo que la información encriptada corresponde a información desencriptada que tiene una primera forma cuando se importa desde la memoria externa y una segunda forma diferente a la primera forma cuando se exporta a la memoria externa aún cuando la información desencriptada correspondiente es sin cambio.
  34. 34. El circuito integrado de .conformidad con la reivindicación 33, caracterizado porque los medios de desencriptación desencriptan la información encriptada utilizando una primera clave de blanqueo y encriptan información desencriptada utilizando una segunda clave de blanqueo diferente a la primera clave de blanqueo.
  35. 35. El circuito integrado de conformidad con lai reivindicación 34, caracterizado porque comprende además un generador de números pseudoaleatorios criptográficamente fuerte que genera la segunda clave de blanqueo .
  36. 36. El circuito integrado de conformidad con la reivindicación 32, caracterizado porque comprende además medios para autentificar la información desencriptada dentro del ambiente seguro.
  37. 37. El circuito integrado de conformidad con la reivindicación 36, caracterizado porque los medios de autentificación autentifican la información desencriptada después de la importación de la memoria externa y reautentifican la información desencriptada antes de la exportación a la memoria externa.
  38. 38. Para utilizarse en un circuito integrado para efectuar operaciones seguras, un método para verificar la manipulación indebida del circuito integrado, caracterizado porque comprende los pasos de: detectar un evento; detectar una autoprueba incorporada sobre al menos un elemento del circuito integrado para determinar si ha ocurrido una manipulación indebida; y si la autoprueba incorporada indica que ha ocurrido una manipulación indebida, colocar una restricción sobre al menos una operación del circuito integrado.
  39. 39. El método de conformidad con la reivindicación 38, caracterizado porque comprende además los pasos de: mantener un procesador asociado con el circuito integrado en un estado de reajuste, de modo que no pueda tenerse acceso a una memoria predefinida que almacena material clave; si al menos un elemento pasa la autoprueba incorporada, liberar el procesador del estado de reajuste; y si al menos un elemento no pasa la autoprueba incorporada, mantener el procesador en el estado de reajuste .
  40. 40. El método de conformidad con la reivindicación 38, caracterizado porque al menos un elemento comprende una memoria.
  41. 41. El método de conformidad con la reivindicación 38, caracterizado porgue al menos un elemento comprende un circuito lógico.
  42. 42. El método de conformidad con la reivindicación 38, caracterizado porque el evento comprende un evento de reajuste.
MXPA/A/2000/005081A 2000-05-24 Un aparato para proporcionar un ambiente de procesamiento seguro MXPA00005081A (es)

Publications (1)

Publication Number Publication Date
MXPA00005081A true MXPA00005081A (es) 2001-07-09

Family

ID=

Similar Documents

Publication Publication Date Title
US6438666B2 (en) Method and apparatus for controlling access to confidential data by analyzing property inherent in data
US6385727B1 (en) Apparatus for providing a secure processing environment
KR100809977B1 (ko) 집적 시스템 내에서의 보안 운영의 활성화 방법, 보안 운영의 초기화 방법, 암호화된 데이터의 변환 방법 및 집적 시스템 기능의 복원 방법
US7500098B2 (en) Secure mode controlled memory
US5949882A (en) Method and apparatus for allowing access to secured computer resources by utilzing a password and an external encryption algorithm
US7313705B2 (en) Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
KR100737628B1 (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
US8332653B2 (en) Secure processing environment
JP4498735B2 (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
US7987356B2 (en) Programmable security platform
AU743775B2 (en) An apparatus for providing a secure processing environment
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
EP1495393A2 (en) Protection against memory attacks following reset
AU750573B2 (en) Method and apparatus for controlling access to confidential data
MXPA00005081A (es) Un aparato para proporcionar un ambiente de procesamiento seguro
MXPA00005079A (es) Metodo y aparato para controlar el acceso a datos confidenciales
CA2638979C (en) Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function