MXPA03004371A - Sistemas y metodos para asegurar la salida de tarjetas de video. - Google Patents

Sistemas y metodos para asegurar la salida de tarjetas de video.

Info

Publication number
MXPA03004371A
MXPA03004371A MXPA03004371A MXPA03004371A MXPA03004371A MX PA03004371 A MXPA03004371 A MX PA03004371A MX PA03004371 A MXPA03004371 A MX PA03004371A MX PA03004371 A MXPA03004371 A MX PA03004371A MX PA03004371 A MXPA03004371 A MX PA03004371A
Authority
MX
Mexico
Prior art keywords
data
key
video card
secure
encrypted
Prior art date
Application number
MXPA03004371A
Other languages
English (en)
Inventor
F Evans Glenn
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MXPA03004371A publication Critical patent/MXPA03004371A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Los diversos metodos y sistemas descritos en sta estan dirigidos a proveer un canal seguro para ejecutar software en una computadora anfitriona. Los metodos y sistemas se dirigen y proporcionan soluciones para un modelo de ataque en el que la ejecucion de software intruso en la computadora anfitriona intenta obtener inapropiadamente o de otra manera manipular datos. Algunas modalidades pueden proporcionar datos de pixeles que se pueden mantener confidenciales (respecto a que las aplicaciones de software no confiables no pueden leer los datos de la pantalla de despliegue visual). Adicionalmente, otras modalidades pueden resguardar la integridad de los datos de pixeles por medio de detectar si los datos de pixeles han sido manipulados inapropiadamente. Diversas modalidades se basan en una maquina de desencriptacion que esta ubicada en una tarjeta de video tan adelante en la cadena de procesamiento del video que se niega el acceso programatico a los datos de pixeles desencriptados.

Description

SISTEMAS Y METODOS PARA ASEGURAR LA SALIDA DE TARJETAS DE VIDEO CAMPO TECNICO Esta invención se relaciona con métodos y sistemas para procesar datos usando tarjetas de video.
ANTECEDENTES DE LA INVENCION Típicamente, el contenido que reside en una computadora puede ser objeto de ataque por individuos que quieren robar o modificar el contenido. Como un ejemplo, considere el caso del autor de un contenido, tal como un estudio cinematográfico o el contenido de publicidad de un usuario en la web. Típicamente estos individuos publicarán el contenido del video que tiene restricciones sobre cómo pueden verlo los usuarios. Típicamente, se puede ver este contenido o se puede reproducir en una computadora tal como una computadora personal. Una buena cantidad de tiempo, esfuerzo y dinero se gasta cada año por individuos y organizaciones sin escrúpulos que tratan de robar o de otra manera obtener inapropiadamente ese contenido de video. Adicionalmente, consideren el caso del software del Comercio electrónico (eCommerce) que habilita a los individuos a realizar transacciones, por ejemplo, transacciones bancarias . Los datos que se despliegan visualmente en un monitor de despliegue visual para que el usuario lo revise y lo manipule puede ser objeto de ataque por aplicaciones de software intrusos que se ejecutan en la computadora del usuario. Esto es, los programas o dispositivos intrusos pueden y frecuentemente tratan de obtener inapropiadamente el contenido una vez que se ha recibido en una computadora, tal como una computadora personal. Una solución para la seguridad del contenido puede incluir diferentes soluciones de administración de derechos digitales basados en el software (DRM) . El problema aqui es que no importan que tan bueno sea el sistema DRM basado en el software, "difícil de observar", resistente al manipuleo que realiza la entrega del software - finalmente, los bits se escriben en una tarjeta de video en donde éstos se pueden "ver" o aun copiar por otro software. Esto presenta una esfera de vulnerabilidad. Por consiguiente, la tarjeta de video que procesa el contenido del video puede ser el objeto de ataques al software. La Figura 1 muestra una tarjeta de video (o gráfico) 100 ejemplar que incluye un conector de barra colectora 102 que se inserta dentro de un puerto en una computadora típica. La tarjeta de video 100 también incluye un conector de monitor 104 (por ejemplo una clavija de 15 pins) que recibe un cable que se conecta a un monitor. La tarjeta de video 100 puede incluir un receptáculo digital de video de salida 106 que se puede usar para enviar imágenes de video a LCD y monitores de tablero plano y similares. La tarjeta de video moderna consiste de cuatros componentes principales: la unidad procesadora de gráficos (GPU) 108, la memoria de video 110, convertidor digital a analógico de memoria de acceso al azar (RAMDAC) 112, y el controlador de software que se puede incluir en el Video BIOS 114. La GPU 108 es un chip procesador de gráficos dedicado que controla todos los aspectos de resolución, profundidad de color, y todos los elementos asociados con la entrega de imágenes en la pantalla del monitor. La unidad procesadora central de la computadora, o CPU (que no se muestra) envia un conjunto de instrucciones de dibujo y datos, los cuales son interpretados por medio del controlador propietario de la tarjeta de gráficos y ejecutados por la GPU 108 de la tarjeta. La GPU 108 realiza esas operaciones como transferencias de mapas de bits y dibujo, midiendo nuevamente la ventana y nuevamente colocando en posición el dibujo de linea, poner fuentes en escala y dibujar polígono. La GPU 108 está diseñado para manejar estas tareas en hardware a velocidades mucho más altas que la operación de software en el CPU del sistema. Entonces, la GPU escribe los datos del cuadro a la zona de memoria intermedia del cuadro (o en la memoria de video 110 en la tarjeta) . La GPU reduce de manera importante la carga de trabajo del CPU del sistema. La memoria que mantiene la imagen de video también se le hace referencia como la zona de memoria intermedia del cuadro y usualmente es implementada en la tarjeta de video misma. En este ejemplo, la zona de memoria intermedia del cuadro está implementado en la tarjeta de video en la forma de memoria 110. Los primeros sistemas implementaban la memoria de video en DRAM estándar. No obstante, esto requiere renovaciones continuas de los datos para evitar que éstos se pierdan y que no se puedan modificar durante este proceso de renovación. La consecuencia, particularmente a las velocidades tan rápidas del reloj que demandan las tarjetas de gráficos modernas, es que el funcionamiento se degrada severamente . Una ventaja de implementar la memoria de video en la misma tarjeta de video es que ésta se puede hacer a la medida para su tarea especifica y, de hecho, esto ha resultado en una proliferación de nuevas tecnologías de memoria: • RAM DE Video (VRAM) : un tipo especial de DRAM de doble puerto, sobre el cual se puede escribir y desde el cual se puede leer al mismo tiempo. Este también requiere mucho menos frecuencia de renovación que el DRAM ordinario y consecuentemente funciona mucho mejor; • RAM de Windows (WRAM) : como lo usa la tarjeta de Matrox Millennium, también es de doble puerto y puede operar ligeramente más rápido que el VRAM convencional; DRAM DE EDO; el cual proporciona una amplitud de banda más alta que DRAM, se puede cronometrar más alto que el DRAM normal y administra los ciclos de escritura/lectura más eficientemente. SDRAM: similar al RAM de EDO excepto que los chips de memoria y gráficos funcionan en un reloj común usado para asegurar los datos, permitiendo que SDRAM opere más rápido que el RAM de EDO regular; SGRAM: igual al SDRAM pero también apoya escrituras de bloque y escritura por bit, la cual rinde un mejor funcionamiento en chips de gráficas que apoyan estas características mejoradas; y DRDRAM: RDRAM Directo es una arquitectura de memoria de propósitos generales, totalmente nueva que promete un funcionamiento 20 veces mejor que el DRAM convencional.
Algunos diseños integran el sistema de circuitos gráficos en una misma tarjeta madre y usa la porción del RAM del sistema para la zona de memoria intermedia del cuadro. A esto se le llama "arquitectura de memoria unificada" y se usa por razones de reducción de costos solamente y puede conducir a un funcionamiento de gráficos inferior. La información en la zona de memoria intermedia del cuadro de la memoria de video es una imagen de lo que aparece en la pantalla, almacenada como un mapa de bits digital. Pero mientras que la memoria de video contiene información digital su medio de salida - el monitor - puede usar señales analógicas. Las señales analógicas requieren más que una simple señal de "encendido" (on) o "apagado" (off) , puesto que se usa para determinar donde, cuándo y con qué intensidad se deben disparar los cañones de electrones puesto que éstos escanean a través y hacia abajo del frente del monitor. Aquí es donde el RAMDAC 112 entra en juego como se describe más adelante. Algunos RAMDACs también apoyan las salidas de la interfase de video digital (DVI) para despliegues visuales como los monitores LCD. En esas configuraciones, el RAMDAC convierte la representación digital interna en una forma que es comprensible por el despliegue visual digital. El RAMDAC juego el papel de un "convertidor de despliegue visual" puesto que éste convierte los datos digitales internos en un forma que entiende el despliegue visual . Aun cuando pudiera no necesitar la cantidad total de memoria de video instalada en la tarjeta de video para una resolución particular, la memoria extra se usa f ecuentemente para asegurar información para la GPU 108. Por ejemplo, el aseguramiento de ítems gráficos usados comúnmente - tal como fuentes de texto e iconos o imágenes - evitan la necesidad de que el subsistema de gráficos cargue éstos cada vez que se escribe una nueva letra o que se mueve un icono y por consiguiente mejora el funcionamiento. Las imágenes aseguradas se pueden usar para hacer cola de secuencias de imágenes que presentará la GPU, liberando de esta manera al CPU para que realice otras tareas. Muchas veces por segundo, el RAMDAC 112 lee el contenido de la memoria de video, lo convierte en una señal, y lo envía a través del cable de video al monitor. Para los despliegues visuales analógicos, existe típicamente un Convertidor Digital a Analógico (DAC) para cada uno de los tres colores primarios que usa el CRT para crear un espectro completo de colores. Para los despliegues visuales digitales, el RAMDA produce un sol flujo de datos RGB que se va a interpretar y a desplegar visualmente por medio del dispositivo de salida. El resultado pretendido es la mezcla correcta que se necesita para crear el color de un solo pixel. La velocidad a la que el RAMDAC 112 puede convertir la información, y el diseño del mismo GPU 108, dicta el rango de velocidades de renovación que la tarjeta de gráficos puede soportar. El RAMDAC 112 también dicta el número de colores disponibles en una resolución dada, dependiendo de su arquitectura interna. El conector de la barra colectora 102 puede soportar una o más barras colectoras que son usadas para conectar con la tarjeta de video. Por ejemplo, una barra colectora del Puerto de Gráficos Acelerado (AGP) puede habilitar a la tarjeta de video a tener acceso directamente en la memoria del sistema. El acceso directo a la memoria ayuda a hacer el pico de la amplitud de banda muchas veces más alto que la barra colectora de la Interconexión de Componente Periférica (PCI) . Esto puede permitir al CPU del sistema que realice otras tareas mientras que la GPU en la tarjeta de video accesa la memoria del sistema. Durante la operación, se pueden suministrar los datos contenidos en la memoria de video integrados a la memoria del sistema de la computadora y se pueden administrar como si fueran parte de la memoria del sistema. Esto incluye cosas tales como técnicas de administración de memoria virtual que el administrador de la memoria de la computadora emplea. Adicionalmente , cuando se necesitan los datos contenidos en la memoria del sistema para una operación de gráficos en la tarjeta de video, se pueden enviar los datos a través de una barra colectora (tal como una barra colectora PCI o AGP) a la tarjeta de video y almacenarse en la memoria de video integrada 110. Aqui se pueden accesar y manipular los datos por medio de la GPU 108 como se describió anteriormente. Esta invención surgió como resultado de las inquietudes asociadas con proporcionar métodos y sistemas para proteger los datos. En particular, la invención surgió como resultado de las inquietudes asociadas con suministrar métodos y sistemas que sean resistentes a los ataques contra el software, particularmente aquellos ataques emprendidos por una aplicación intrusa que se ejecuta en la máquina de un usuario .
COMPENDIO Los diferentes métodos y sistemas que se describen en la presente están dirigidos para proveer un canal seguro para software que se ejecuta en una computadora anfitriona. Los métodos y sistemas se dirigen a y proporcionar soluciones para un modelo de ataque en el cual software intruso que ejecuta en la computadora anfitriona pretende obtener inapropiadamente o de otra manera manipular los datos. Algunas modalidades pueden proporcionar datos de pixeles que se pueden mantener confidencial (respecto a que las aplicaciones de software no confiables no pueden leer los datos de la pantalla de despliegue visual) . Adicionalmente , otras modalidades pueden preservar la integridad de los datos de pixeles por medio de detectar si los datos de pixeles han sido manipulados inapropiadamente. Diversas modalidades están basadas en una máquina desencriptadora que está localizada en una tarjeta de video muy al final en la cadena de procesamiento del video de tal manera que se niega el acceso programático a los datos de pixeles desencriptados .
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 es un diagrama de bloques que muestra diversos componentes de una tarjeta de video o de gráficos ejemplar que se pretende usar en un sistema por computadora. La Figura 2 es un diagrama de bloques de un sistema por computadora ejemplar que puede emplear tarjetas de video de conformidad con la modalidad descrita. La Figura 3 es un diagrama de bloques que muestra diversos componentes de una tarjeta de video o de gráficos ejemplar de conformidad con una modalidad. La Figura 4 es un diagrama de bloques que muestra una superficie primaria ejemplar que tiene regiones seguras y no seguras . La Figura 5 es un diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. La Figura 6 es un diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. La Figura 7 es un diagrama de bloques que muestra una superficie primaria ejemplar que tiene una región segura y una región no segura. La Figura 8 es un diagrama de bloques que muestra una pantalla de despliegue visual que tiene ventanas superpuestas . La Figura 9 es un diagrama que muestra datos de pixeles ejemplares y una tabla de funciones auxiliares asociadas . La Figura 10 es un diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. La Figura 11 es un diagrama que muestra una tabla de claves por pixel ejemplar de conformidad con una modalidad. La Figura 12 es un diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. La Figura 13 es un diagrama que muestra una tabla ejemplar de conformidad con una modalidad.
DESCRIPCION DETALLADA Siatama por computadora Ejemplar La Figura 2 ilustra un ejemplo de un medio ambiente de computación 200 adecuada sobre el cual se pueden implementar tanto el sistema como los métodos relacionados descritos a continuación. Se debe notar que el medio ambiente de computación 200 es solamente un ejemplo de un medio ambiente de computación adecuado y no se pretende sugerir ninguna limitación respecto al alcance del uso o funcionalidad del sistema de procesamiento de los elementos. Tampoco se debe interpretar el medio ambiente de computación 200 como que tiene alguna dependencia o requerimiento relacionado a ninguna o la combinación de componentes ilustrados en el medio ambiente de computación 200 ejemplar. Las diferentes modalidades descritas pueden ser operacionales con numerosos medio ambientes o configuraciones de sistemas de computación para propósitos generales o para propósitos especiales. Los ejemplos de sistemas de computación, medio ambientes y/o configuraciones bien conocidos que pudieran ser adecuados para usar con el sistema de procesamiento de los elementos incluye, pero no se limita a, computadoras personales, computadoras servidoras, clientes delgados, clientes gruesos, dispositivos de mano o laptop, sistemas de procesadores múltiples, sistemas basados en microprocesadores, cajas superiores, electrónicos de consumo programables , PCs de la red, minicomputadoras , procesadores centrales, medio ambientes de computación distribuidos que incluyen cualesquiera de los sistemas o dispositivos anteriores, y similares. En ciertas implementaciones, el sistema y los métodos relacionados pudieran describir bien en el contexto general de las instrucciones ejecutables por computadora, como los módulos de programas, que son ejecutados por medio de una computadora. Generalmente, los módulos de programas incluyen rutinas, programas, objetos, componentes, estructuras de datos, etcétera que realizan tareas particulares o implementan tipos de datos abstractos particulares. Las modalidades también se pueden practicar en medio ambientes de computación distribuidos en donde las tareas se realizan por medio de dispositivos procesadores remotos que están enlazadas a través de una red de comunicaciones. En un medio ambiente de computación distribuido, los módulos de programas pueden estar localizados tanto local como elementos de almacenaje por computadora remota incluyendo dispositivos de almacenamiento de memoria. De conformidad con la modalidad del ejemplo ilustrado de la Figura 2, el sistema de computación 200 se muestra que comprende uno o más procesadores o unidades procesadoras 202, un memoria del sistema 204 , y una barra colectora 206 que acopla diversos componentes del sistema incluyendo la memoria del sistema 204 al procesador 202. Se pretende que la barra colectora 206 represente uno o más de cualesquiera de los diferentes tipos de estructuras de barras colectoras, incluyendo una barra colectora de memoria, o controlador de memoria, una barra colectora periférica, un puerto de gráficos acelerado, y un procesador o barra colectora local que usa cualesquiera de una diversidad de arquitecturas de barras colectoras. A titulo de ejemplo, y no de limitación, esas arquitecturas incluyen la barra colectora de Industry Standard Arquitectura (ISA), barra colectora de Micro Channel Arquitectura (MCA) , barra colectora de Enhanced ISA (EISA) , barra colectora local de Video Electronics Standards Association (VESA) , y barra colectora de Peripheral Componente Interconnects (PCI) también conocida como barra colectora Mezzanine. La computadora 200 típicamente incluye una diversidad de elementos legibles por computadora. Esos elementos pudieran ser cualesquiera elementos disponibles que sean accesibles localmente y/o remotamente por medio de la computadora 200, e incluyen tanto elementos volátiles como los no volátiles, elementos removibles y no removibles. En la Figura 2, la memoria del sistema 204 incluye elementos legibles por computadora en la forma de volátil, como la memoria de acceso al azar (RAM) 210, y/o la memoria no volátil, como la memoria de solo lectura (ROM) 208. Un sistema de entrada/salida básico (BIOS) 212, que contiene las rutinas básicas que pueden ayudar a transferir la información entre elementos dentro de la computadora 200, tal como durante el arranque, se almacena en una ROM 208. La RAM 210 típicamente contiene datos y/o módulos de programas que son accesibles inmediatamente a y/o que son operados actualmente por medio de unidad (es) procesadora ( s ) 202. La computadora 200 adicionalmente puede incluir otros elementos de almacenamiento por computadora removibles /no removibles, volátiles/no volátiles. A título de ejemplo solamente, la Figura 2 ilustra una unidad de disco duro 228 para leer desde éste y escribir en un elemento magnético no volátil, no removible (que no se muestra y que típicamente se le llama "unidad dura"), una unidad de disco magnético 230 para leer desde ésta y escribir a un disco magnético removible, no volátil 232 (por ejemplo un "disco floppy"), y una unidad de disco óptico 234 para leer o escribir desde o a éste a un disco óptico removible, no volátil 236 como un CD-ROM, DVD-ROM u otros elementos ópticos. La unidad de disco duro 228, la unidad de disco magnético 230, y la unidad de disco óptico 234 están conectadas cada una a una barra colectora 206 por medio de una o más interfases 226. Las unidades y sus elementos legibles por computadora asociados proporcionan almacenamiento no volátil de las instrucciones legibles por computadora, estructuras de datos, módulos de programas, y otros datos para la computadora 200. Aun cuando el medio ambiente ejemplar descrito en la presente emplea una unidad de disco duro 228, una unidad de disco magnético removible 232, una unidad removible de disco magnético 232, y una unidad removible de disco óptico 236, aquellas personas con experiencia en la técnica deben notar que también se pueden usar en el medio ambiente de operación ejemplar otros tipos de elementos legibles por computadora los cuales pueden almacenar datos que sean accesibles por medio de una computadora, tales como cartuchos magnéticos, tarjetas de memoria flash, discos de video digitales, memorias de acceso al azar (RAMs), memorias de solo lectura (ROM), y similares.
Un número de módulos de programas se puede almacenar en el disco duro 228, disco magnético 232, disco óptico 236, ROM 208, o RAM 210, incluyendo, a título de ejemplo, y no de limitación, un sistema operativo 214, uno o más programas de aplicación 216 (por ejemplo el programa de aplicación multimedia 224), otros módulos de programas 218, y los datos de programa 220. Un usuario puede introducir comandos e información en la computadora 200 a través de dispositivos de entrada como un teclado 238 y dispositivo apuntador 240 (como un "ratón") . Otros dispositivos de entrada pueden incluir dispositivo ( s ) de entrada de audio/video, un micrófono, palanca de mando, cojinete de juego, platillo satelital, puerto en serie, escáner, o similares (que no se muestran) . Estos y otros dispositivos de entrada están conectados a la(s) unidad(es) procesadora ( s ) 202 a través de interfases de entrada 242 que están acopladas a la barra colectora 206, pero que pudieran estar conectados por medio de otras interfases y estructuras de barra colectora, tal como un puerto paralelo, puerto de juego, o una barra colectora en serie universal (USB) . Un monitor 256 u otro tipo de dispositivo de despliegue visual también se conecta a la barra colectora 206 a través de una interfase, como un adaptador de video o tarjeta de video/gráficos 244. Adicional al monitor, las computadoras personales típicamente incluyen otros dispositivos de salid periférica (no se muestran) , como bocinas e impresoras, las cuales se pueden conectar a través de la interfase periférica de salida 246. La computadora 200 puede operar en un medio ambiente para poner en red usando conexiones lógicas a una o más computadoras remotas, tal como una computadora remota 250. La computadora remota 250 puede incluir muchos o todos los elementos y características descritos en ésta relativos a la computador . Como se muestra en la Figura 2, el sistema de computación 200 está acoplado comunicativamente a dispositivos remotos (por ejemplo, la computadora remota 250) a través de una red de área local (LAN) 251 y una red de área amplia general (WAN) 252. Esos medio ambientes puestos en red son comunes en oficinas, redes por computadora a todo lo ancho de las empresas, intranets, y la Internet. Cuando se usa en un medio ambiente para poner en red LAN, la computadora 200 se conecta a LAN 251 a través de una interfase de red adecuada o adaptador 248. Cuando se usa en un medio ambiente para poner en red WAN, la computadora 200 típicamente incluye un módem 254 u otros elementos para establecer comunicaciones a través de la WAN 252. El módem 254, que puede ser interno o externo, se puede conectar a la barra colectora del sistema 206 a través de la interfase de entrada del usuario 242, u de otro mecanismo apropiado.
En un medio ambiente para poner en red, los módulos de programas descritos relativos a la computadora personal 200, o de porciones de la misma, se pueden almacenar en un dispositivo de almacenamiento de memoria remoto. ? titulo de ejemplo, y no de limitación, la Figura 2 ilustra los programas de aplicación remotos 216 como que residen en un dispositivo de memoria de la computadora remota 250. Se notará que las conexiones de red mostradas y descritas son ejemplares y se pueden usar otros elementos para establecer un enlace de comunicaciones entre las computadoras.
Vista Ganar l Los diversos métodos y sistemas descritos en ésta están dirigidos a suministrar un canal seguro para ejecutar el software en una computadora anfitriona. Los métodos y sistemas se dirigen a y proporcionan soluciones para un modelo de ataque en el que el software intruso que se ejecuta en la computadora anfitriona trata de obtener inapropiadamente o de otra manera manipular los datos . Las diferentes modalidades pueden proporcionar un medio ambiente de ejecución seguro en el que los datos se pueden reproducir sin ningún riesgo en una pantalla de despliegue visual con el que un usuario puede interactuar. La modalidad descrita puede incorporar, entre otras características, una o ambas de las siguientes características . La primer característica es que los datos, por ejemplo los datos de pixeles que residen en la tarjeta de video, se pueden mantener confidencial. Esto quiere decir que las aplicaciones de software no confiables (o aplicaciones intrusas) no pueden leer los datos a partir de la pantalla de despliegue visual o desde la memoria de video. El aspecto de confidencialidad es útil en la arena del lugar de trabajo digital porque si uno esta reproduciendo datos de video o de pixeles, es deseable estar habilitados para enviar los datos de video a la tarjeta de video de tal manera que una "herramienta de acceso no autorizado" que opera en la computadora no pueda leer los datos. Por ejemplo, considera que un usuario está trabajando en un programa de correo electrónico seguro que lo habilita para recibir los datos de una manera encriptada. Diversas modalidades pueden habilitar a los datos que sean reproducidos en la pantalla de despliegue visual sin correr el riesgo de que una aplicación intrusa pueda accesar los datos . La segunda características es aquella de integridad.
Por esto se quiere decir que, fundamentalmente, uno no quiere que el software no confiable (o software intruso) sea capaz de manipular los datos que se despliegan visualmente en porciones de un despliegue visual. Considere, por ejemplo, un escenario de un Comercio electrónico en el que un usuario arregla, a través del software que se ejecuta en su computadora, que se paguen $10 a cierta entidad. El usuario pudiera simplemente escribir la cantidad en dólares en una ventana desplegada en su pantalla de despliegue visual. Es posible, no obstante, que una aplicación intrusa cambie los "$10" a "$1000". Comprensiblemente, esto no es deseable; el usuario ha autorizado un pago por una cantidad mayor que la que el pretendía. Adicionalmente , si algún software no confiable de alguna manera manipula inapropiadamente los datos, sería deseable estar en posibilidad de decirle lo que ha ocurrido. De conformidad con lo anterior, algunas de las modalidades que se describen a continuación suministran los elementos por medio de los cuales se puede detectar la manipulación de datos .
Modalidades Ejemplares Las modalidades descritas a continuación están dirigidas a proporcionar una salida de video segura - esto es, salida de video que no sea susceptible a los ataques contra el software. Diversas modalidades pueden proporcionar protecciones basadas en la ventana que se pueden aplicar selectivamente a regiones (es decir ventanas) en la pantalla de despliegue visual del usuario, más bien que toda el área de la pantalla en si - a pesar de que no se excluye la protección de la pantalla completa. Típicamente, el software no confiable no puede leer la salida de video segura. Este comportamiento suministra protección para el contenido tal como contenido premium (por ejemplo, videos, libros), asi como una amplia variedad de Comercio electrónico en general y aplicaciones de seguridad. Adícionalmente , diversas modalidades pueden suministrar los llamados diálogos seguros que no son oscurecibles (ni parcialmente ni completamente) por medio de diálogos no confiables. Este comportamiento es de más utilidad en el contexto de las transacciones del Comercio electrónico . Las modalidades descritas a continuación son soluciones basadas en su encriptación que proporcionan salida de video segura. Las ventajas de las diversas modalidades son que las modalidades son típicamente fáciles de implementar y virtualmente no tienen impacto sobre las arqui ecturas de software existentes. Algunas de las modalidades que se van a describir en breve son basadas en una máquina desencriptadora que está localizada en la tarjeta de video casi al final de la cadena de procesamiento del video. En los ejemplos descritos en este documento, muchos aspectos de las modalidades están implementadas en el hardware - otros aspectos se pueden implementar tanto en microprogramación como en software.
Una característica deseable de las modalidades inventivas es que diversos datos que se van a desplegar visualmente en la pantalla de despliegue visual del usuario estén encriptados. De conformidad con lo anterior, los ataques que están dirigidos para robar los datos resultarán solamente en el robo de datos encriptados. Las técnicas para encriptar se pueden utilizar de tal manera que cualesquiera datos encriptados que sean robados sean matemáticamente no factible desencriptar . Adicionalmente , la desencriptación de los datos encriptados se lleva a cabo en un punto tal en la cadena del procesamiento que no existe un acceso programático a los bits desencriptados que se van a desplegar visualmente. Esto es, no existe acceso del software a los bits desencriptados de tal manera que el software intruso que se ejecuta en la computadora del usuario no puede acceder los bits desencriptados . En una modalidad, se localiza un desencriptador en la tarjeta de video y se coloca en la parte intermedia de la GPU y del convertidor del despliegue visual (por ejemplo, el RAMDAC) . Es deseable que el desencriptador se implemente en el hardware y que pueda procesar los datos encriptados en "tiempo real" a medida que la tarjeta de video esté tramando la zona de memoria intermedia del cuadro al convertidor del despliegue visual.
Arquitectura Ejemplar La Figura 3 muestra una tarjeta de video (o gráficos) ejemplar 300 de conformidad con una modalidad. La tarjeta 300 incluye un conector de barra colectora 302 que se enchufa en un puerto en una computadora típica. La tarjeta de video 300 también incluye un conector de monitor 304 (por ejemplo una clavija de 15 pins) que recibe un cable que conecta al monitor. La tarjeta de video 300 puede, pero no es necesario, incluir un receptáculo de video de salida digital 306 (por ejemplo DVI) que se puede usar para enviar imágenes de video a despliegues visuales digitales y similares. Al igual que la tarjeta de video de la Figura 1, la tarjeta de video 300 comprende una unidad procesadora de gráficos (GPU) 308, una memoria de video 310, convertidor de despliegue visual o convertidor de digital a analógico de memoria de acceso al azar (RAMDAC) 312, y el software del controlador el cual se puede incluir en el Video BIOS 314. La GPU es un chip procesador de gráficos dedicado que controla todos los aspectos de resolución, profundidad de color, y todos los elementos asociados con la reproducción de imágenes en la pantalla del monitor. El controlador de memoria (que algunas veces está integrado en la GPU) administra la memoria en la tarjeta de video. La unidad procesadora central de la computadora o CPU (no se muestra) envia un conjunto de instrucciones de dibujo y datos, los cuales son interpretados por el controlador propietario de la tarjeta de gráficos y ejecutado por la GPU 508 de la tarjeta. La GPU 308 realiza esas operaciones como transferencias de mapa de bits y dibujo, dimensionando nuevamente y poniendo en posición nuevamente la ventana, dibujo de linea, poniendo en escala la fuente y dibujando polígonos. Entonces la GPU puede escribir los datos del cuadro a la zona de memoria intermedia del cuadro (o la memoria de video integrada 310) . La información en la zona de memoria intermedia del cuadro de la memoria de video es una imagen de lo que aparece en la pantalla, almacenada como una mapa de bits digital. El RAMDAC 312 es utilizado para convertir el mapa de bits digital en una forma que se puede usar para reproducir en el monitor, como se describe anteriormente. En adición a estos componentes, en esta modalidad, la tarjeta de video 300 comprende un controlador de memoria 316 y un procesador de control 318 que puede incluir un administrador clave 319. La tarjeta de video también incluye un desencriptador 320. Estos componentes se pueden implementar en cualquier hardware, software, microprogramación o una combinación de las mismas que sea adecuada . El controlador de memoria 316 recibe los datos en la tarjeta de video y administra los datos en la memoria de video 310. El controlador de memoria también puede ser responsable de administrar las transferencias de datos entre la tarjeta de video y la memoria del sistema. Se proporciona un procesador de control 318 y puede incluir un administrador clave 319. El procesador de control puede ser responsable de organizar las funciones criptográficas que se realizan en la tarjeta de video. Por ejemplo, el procesador de control 318 se puede comunicar, a través de una barra colectora dedicada o canal seguro, con el desencriptador 320 para asegurarse que el desencriptador tiene la capacidad de desencriptación que éste necesita para desencriptar apropiadamente los datos de pixeles que han sido encriptados por razones de seguridad. El procesador de control 318, a través del administrador clave 319, puede administrar las claves que están asociadas con los datos de pixeles pertinentes de encriptación y desencriptación. En algunas modalidades el procesador de control se puede implementar como un chip de circuito integrado por separado en la tarjeta de video. El desencriptador 320 está configurado o es configurable para desencriptar datos de pixeles pertinentes. Por ejemplo, como más adelante se describe con mayor detalles, los datos que se van a proteger pueden ser encriptados y escritos a una región segura que comprende parte de la llamada "superficie primaria" o superficie de escritorio de la memoria de la tarjeta de video que contiene los datos que son usados por el RAMDAC 512 para reproducir una imagen en el monitor. La imagen encriptada se puede copiar a una ubicación temporal en la memoria de video antes de ser copiada a la superficie primaria. El procesador de control 318 puede establecer las claves de encriptación que se van a usar para encriptar los datos y puede proporcionar las claves de desencriptación al desencriptador 320 para usar en la desencriptación de los datos de pixeles encriptados. Una vez que los datos han sido desencriptados , se pueden pasar los datos a través del RAMDAC para su procesamiento adicional . Se debe notar y entender que mientras que el desencriptador está ilustrado como un componente separado, se puede suministrar al RAMDAC con funcionalidades de desencriptación adecuadas de tal manera que opere efectivamente como un desencriptador. En operación, una aplicación de software confiable o segura 322 puede establecer una clave compartida entre el desencriptador 320 y la aplicación de software. La aplicación de software puede entonces usar la clave para generar los datos de pixeles encriptados que se pueden almacenar en la memoria (ya sea la memoria de video 310 o la memoria del sistema) . Típicamente existe un par de diferentes maneras en las que se pueden escribir los datos de pixeles en las regiones protegidas de la superficie primaria o la zona de memoria intermedia del cuadro. Primero, los datos de pixeles se pueden escribir directamente en la zona de memoria intermedia del cuadro a través de una operación de "movimiento" que arregla el controlador de la memoria. Segundo, una aplicación (tal como una aplicación segura 322) puede ensamblar los datos de pixeles que vayan a ser protegidos en la memoria del sistema en donde éstos son encriptados . Los datos encriptados en la memoria del sistema eventualmente serán copiados a la superficie primaria para su desencriptación y reproducción. El procesador de control entonces puede asegurar que el desencriptador 320 sabe cuál clave usar para desencriptar los datos de pixeles antes de que los datos sean enviados al RAMDAC 312 (o antes de que éstos se entreguen en el monitor) .
Por consiguiente, en este ejemplo, existe un mecanismo mediante el cual se pueden compartir una o más claves entre entidades confiables . Los datos se pueden encriptar en la tarjeta de video y desencriptar en un punto en la cadena de procesamiento de datos de tal manera que los datos no encriptados que se tienen que reproducir a un monitor de despliegue visual no sean susceptibles a un ataque de software. Las entidades no confiables o intrusas que tratan de leer los datos encriptados fuera de la(s) región (es) protegida (s) de la superficie primaria solamente leerán datos encriptados lo cual es efectivamente inútil para ellos. Adicionalmente, esto es verdad cuando la memoria VRAM es mapeada en la memoria del sistema a través de técnicas de administración de memoria virtual. Por consiguiente, sea que los datos que se supone están en región (es) protegida (s) de la superficie primaria están ya sean en la tarjeta de video o mapeados en la memoria del sistema, están encriptados y por consiguiente protegidos.
Ventana (s) Segura (s) En una modalidad, se proporcionan una o más ventanas seguras y se pueden usar para desplegar visualmente datos confidenciales en la pantalla de despliegue visual del usuario. Las ventanas seguras en la pantalla de despliegue visual del usuario están asociadas y corresponden a regiones seguras de la superficie primaria en la memoria de la tarjeta de video (o la memoria del sistema si se usan las técnicas de administración de memoria virtual) . Como un ejemplo, note la Figura 4. En ésta, se muestra una representación diagramática de la superficie primaria de la tarjeta de video generalmente en 400. La superficie primaria 400 comprende una región 402 (sombreada) que contiene datos no encriptados, y una o más regiones que contienen datos encriptados. En este ejemplo en particular, dos regiones seguras 404, 406 ejemplares pueden contener datos encriptados . Cada ventana que corresponde a regiones seguras se muestran en 404a, 406a respectivamente. En esta modalidad, el desencriptador 320 (Figura 3) está configurado para pasar a través de todos los datos de pixeles en la región r02 sin modificarlos (es decir, desencriptarlos ) . Esto es, puesto que los datos que residen en la región 402 no están encriptados, no existe la necesidad de que el desencriptador 320 desencripte los datos. No obstante, el desencriptador si desencripta los datos encriptados que residen en las regiones 404 y 406. Los datos de pixeles dentro de las regiones 404, 406 pueden ser desencriptados por medio del desencriptador usando una clave asociada con la región segura. En algunas modalidades, una sola clave se puede asociar con todas las regiones seguras. En otras modalidades, cada región segura puede tener su propia clave asociada. Una razón para tener claves separadas para cada una de las regiones seguras es que algunas regiones seguras pudieran no estar asociadas con ciertas aplicaciones que pueden accesar otras regiones seguras. Por ejemplo, suponiendo que una aplicación de correo electrónico seguro está asociada con una región segura en la que el correo electrónico encriptado va a residir. Suponiendo también que una aplicación de Comercio electrónico está asociada con una región segura diferente. Realmente no existe razón para que la aplicación de correo electrónico tenga acceso a la región segura asociada con la aplicación de Comercio electrónico. Con todo, si solamente existe una clave para todas las regiones seguras, entonces presumiblemente todas las aplicaciones que pueden accesar una región segura puede accesar todas las demás regiones seguras . De conformidad con lo anterior, por medio de suministrar una clave diferente para cada una de las regiones seguras, el acceso a cada región segura está limitado a solamente aquellas aplicaciones que deban tener acceso. Alternativamente, en otra modalidad, una entidad central (un "mezclador" o "compositor") pudiera tomar diversas regiones y transcriptografiarlas a una clave común para ser desencriptadas por medio del hardware del despliegue visual. Cada aplicación tendría que confiar en la entidad del compositor . La Figura 5 es una diagrama de flujo que describe los pasos en un método de encriptación de conformidad con una modalidad. El método se puede implementar en cualquier hardware, software, microprogramación o una combinación de las mismas que sea adecuado. En el ejemplo presente, el método se puede implementar, cuando menos en parte, por medio de una tarjeta de video configurada adecuadamente - un ejemplo del cual se dio anteriormente. El paso 500 define una o más regiones seguras de una superficie primaria. Las regiones pueden comprender cualquier forma y tamaño adecuados. En el ejemplo anterior, el caso es que las regiones seguras tenían una forma rectangular. Es deseable que las regiones sean más pequeñas en tamaño del que sea necesario para ocupar la totalidad de la pantalla de despliegue visual cuando se entregan a la pantalla de despliegue visual. El paso 502 asocia cuando menos una clave con regiones seguras individuales de la superficie primaria. La clave o claves se pueden usar para encriptar y/o desencriptar los datos de pixeles que van a residir en la región segura. El paso 504 usa la clave o claves para encriptar los datos de pixeles . Este paso se puede implementar por medio de un sistema confiable de software, microprogramación y/o hardware. Por ejemplo, una aplicación segura tal como la aplicación 322 puede ocasionar que los datos de pixeles sean encriptados . El paso 506 escribe o de otra manera mueve los datos de pixeles encriptados a una región segura de la superficie primaria. Note que una vez que los datos de pixeles están encriptados, los datos de pixeles desencriptados implícitos están protegidos contra robo. La Figura 6 es un diagrama de flujo que describe los pasos en un método de desencriptación de conformidad con una modalidad. El método se puede implementar en cualquier hardware, software, microprogramación o una combinación de las mismas que sea adecuado. En el ejemplo presente, el método se puede implementar, cuando menos en parte, por medio de una tarjeta de video configurada adecuadamente - un ejemplo del cual se dio anteriormente. El paso 600 suministra los datos encriptados en una región segura de la superficie primaria de la tarjeta de video. El paso 602 suministra una clave asociada con la región segura. Este paso se puede implementar por medio del procesador de control 318 (Figura 3) . Por ejemplo, el procesador de control puede proporcionar una o más claves al desencriptador para usar en la desencriptación de los datos de pixeles encriptados. El paso 604 usa la clave para desencriptar los datos encriptados en la región segura de la superficie primaria. Este paso se puede implementar por medio del desencriptador 320 (Figura 3) . Note que el punto en la cadena de procesamiento de datos de pixeles en donde se realiza la desencriptación está programáticamente inaccesible. Por consiguiente, los datos de pixeles desencriptados están protegidos contra ataques de software. El paso 606 entonces proporciona los datos desencriptados a un convertidor de despliegue visual para su procesamiento adicional el cual incluye reproducir los datos de pixeles en la pantalla de despliegue visual del usuario.
Ejemplo de Implamantación. En una implementación, la encriptación y la desencriptación se pueden realizar usando una máquina basada en clave pública. Un protocolo de control puede permitir al software, tal como una aplicación de seguridad, enviar comandos en forma encriptada al procesador de control 318 (Figura 3), y recibir acuses de recibo criptograficados para asegurar que los comandos hayan sido ejecutados. Se puede usar cualquier conjunto de comando adecuado. Como por ejemplo, se pueden usar los siguientes comandos (o unos que sean similares a estos) : * GetPK() Regresar la clave de encriptación público del dispositivo * SetSec() Establecer una forma de región segura y clave de encriptación para esa forma de región. *ClearSec ( ) Aclarar la encriptación para una región.
En algunas modalidades, el desencriptador 320 puede inferir la geometría de la región segura de tal manera que ésta puede desencriptar los datos de pixeles encriptados dentro de la región. En aun otras modalidades, se le puede informar al desencriptador de la geometría. Esto puede ser útil cuando, por ejemplo, se arrastra y se suelta una ventana segura en una localidad diferente en la pantalla de despliegue visual del usuario. Por ejemplo, el GPU 308 puede incorporar un procesador de geometría (no ilustrada específicamente) la cual mantiene una lista de las regiones seguras de la superficie primaria y diversos datos de seguridad que están asociados con aquellas regiones. Los datos de seguridad pueden incluir las coordinadas x- y y- de las regiones, las dimensiones de anchura y altura de la región y la clave asociada con la región en particular. Se le puede notificar al desencriptador 320 de estos datos de seguridad para que cuando éste empiece a procesar los datos de pixeles, éste sepa si un pixel en particular pertenece a una de estas regiones y necesita ser desencriptado, o si los datos de pixeles en particular se deben pasar a través del RAMDAC . Si se mueve una ventana segura, el procesador de geometría puede notificar al desencriptador de las nuevas coordinadas de la ventana de seguridad. En una arquitectura de ejemplo la funcionalidad de la clave pública y control se pueden modularizar en un dispositivo externo discreto con una memoria flash integrada (similar a una 'tarjeta inteligente') . A la inversa, se puede incorporar el desencriptador 320 en el silicio del GPU (es decir integrado con el GPU) . El procesador de control 318 pueden entonces pasar las claves de desencriptación directamente al GPU. Como una medida preventiva adicional para evitar ataques de software, se puede proporcionar una barra colectora dedicada entre el procesador de control 318 y el GPU 308.
En operación, se puede autenticar el procesador de control 318 por medio de software/hardware seguros y puede recibir comando encriptados como "establecer que la clave de encriptación para esta región segura sea x." Entonces el procesador de control regresa una respuesta criptográfica para asegurar que el comando ha sido ejecutado apropiadamente . La clave de encriptación ahora puede ser usada para reproducir los datos de video a la región segura. En este ejemplo, es posible para una clave adversaria leer estos datos encriptados. No obstante, cualesquiera datos que sean leídos por una clave tal son encriptados y efectivamente inútiles a la clave adversaria. En algunas implementaciones , podría ser posible para la clave adversaria modificar los datos encriptados. Los datos encriptados que sean modificados, sin embargo, serán desencriptados en datos que, cuando se entreguen a una pantalla de despliegue visual, aparecerán lógicamente fuera de contexto. Por ejemplo, esos datos pueden aparecer, cuando se entregan a una pantalla de despliegue visual como una salida de ruido/gris al azar. Esta clase de ataque con toda seguridad será notada por el usuario . En adición, el uso de la información de autenticación puede asegurar que si los datos de pixeles son modificados por medio de la clave adversaria, se le dará parte al usuario. Como por ejemplo, note los siguiente. Se puede requerir que el formato de datos seguro comprenda un cierto número de bits por pixel, por ejemplo 24 bits/pixel. De los 24 bits/pixel, se puede requerir que 8 bits siempre tengan un valor de cero. Entonces, el desencriptador puede ser configurado para hacer que los pixeles que no cumplen destellen morado, y pueden notificar al procesador de control que han sufrido un ataque. Adicionalmente , se pueden usar otras técnicas para asegurar que si los datos de pixeles son modificados inapropiadamente , se puede detectar tal modificación. Como por ejemplo, note lo siguiente. Se puede computar un hash para los datos de pixeles asociados con cada pixel que se está reproduciendo. A medida que se procesan los datos de pixeles por medio del convertidor de despliegue visual (por ejemplo el RAMDAC 312), entonces el convertidor de despliegue visual puede computar un hash de los datos de pixeles y comparar los datos de pixeles del hash computado con el hash computado previamente. Si existe una modificación de datos inapropiada, entonces las comparaciones del hash indicarán que esto ha ocurrido.
Técnicas dm Encriptación Ejemplares Se pueden utilizar diversas técnicas de encriptación para asegurarse que los datos de pixeles que residen en regiones seguras de la superficie primaria sean encriptados y después desencriptados apropiadamente más adelante por el desencriptador . Dos técnicas de encriptación ejemplar se describen más adelante - aun cuando se pueden usar otras técnicas sin apartarse del espíritu y del alcance del tema del asunto reivindicado. Una primera técnica de encriptación que se puede usar es un cifrado por flujo. Los cifrados de flujo son típicamente muy rápidos en software y muy fáciles de implementar en el hardware. Un cifrado por flujo es un tipo de algoritmo de encriptación simétrica que típicamente opera en unidades más pequeñas de texto sin cifrar, usualmente bits. Un cifrado por flujo genera lo que se llama un flujo clave (una secuencia de bits usados como una clave) . La encriptación se realiza por medio de combinar el flujo clave con el texto sin cifrar o bits, usualmente con la operación exclusiva OR por bits. La generación del flujo clave puede ser independiente del texto sin cifrar y del texto cifrado, produciendo lo que se llama un cifrado por flujo sincrónico, o puede depender de los datos y su encriptación, en cuyo caso se dice que el cifrado por flujo es auto sincronizador. La mayoría de los diseños de cifrados de flujo son para cifrados de flujo sincrónicos. Entonces, el mismo cifrado por flujo se puede usar para desencriptar los datos que hayan sido encriptados . El cifrado por flujo se puede operar a través de toda la superficie primaria en una manera que solamente desencripta los datos en las regiones seguras de la superficie primaria. Esto, no obstante, no es la mejor selección puesto que el cifrado por flujo necesita operar sobre toda la superficie primaria - pero solamente aquellas regiones seguras. De conformidad con lo anterior, el rango sobre el cual el cifrado por flujo es operado se puede restringir para que el rango sea definido solamente con las fronteras de la región o regiones seguras . Una manera deseable de implementar un rango restringido del cifrado por flujo es definir, para cada renovación del despliegue visual, una ubicación de inicio para el cifrado por flujo - tal como el pixel izquierdo superior de una región segura. Entonces se puede operar el cifrado por flujo dentro de la región segura hasta que se haya procesado el pixel derecho inferior de la región segura. Como ejemplo, note la Figura 7. En esa, una superficie primaria 700 comprende una región 702 en la que los datos de pixeles no encriptados deben residir y una región segura 704 en la que los datos de pixeles encriptados (encriptados con un cifrado por flujo) debe residir. Con un cifrado por flujo apropiadamente restringido de rango, el cifrado por flujo se puede operar iniciando en la ubicación indicada en el pixel izquierdo superior, y terminando en la ubicación indicada en el pixel derecho inferior. Cuando los datos encriptados se van a desencriptar, se le puede notificar al desencriptador (tal como el desencriptador 320), las coordinadas de las ubicaciones de inicio y terminación del cifrado por flujo. Una de las características agradables de esta implementación es que si la ventana segura asociada con una de las regiones seguras es arrastrada y soltada en otra ubicación (lo cual puede invocar que un software no confiable mueva la ventana alrededor), la operación de encriptación puede continuar para tomar su lugar en la nueva ubicación. De manera similar, también se le puede notificar al desencriptador 320 de la ubicación de tal manera que éste pueda operar el cifrado por flujo en la ubicación apropiada para desencriptar los datos de pixeles encriptados . El encriptador puede permitir que el cifrado por flujo continúe a través de diversos cuadros, de esta manera haciendo más difíciles los ataques diferenciales. La clave para el cifrado por flujo se puede cambiar después de cada grupo de cuadros. Para reducir el número de claves, se puede negociar una configuración fija de claves antes de que se usen. El encriptador puede hacer ciclos a través de la configuración de claves seleccionado una clave diferente para cada grupo de cuadros. Una segunda técnica de encriptación que se puede usar es un cifrado por bloques. Un cifrado por bloques es un tipo de algoritmo de encriptación de clave simétrica que transforma un bloque de longitud fija de datos de texto sin cifrar o bits (texto no encriptado o bits) en un bloque de texto cifrado (texto encriptado o bits) de la misma longitud. Esta transformación se realiza bajo la acción de una clave secreta proporcionada por un usuario. La Desencriptación se realiza por medio de aplicar la transformación en reversa al bloque de texto cifrado usando la misma clave secreta. La longitud fija es llamada el tamaño del bloque, y para muchos cifras de bloque, el tamaño del bloque es de 64 bits. En los años por venir, el tamaño del bloque se incrementará a 128 bits a medida que los procesadores se hacen más sofisticados.
De las dos técnicas de encriptación descritas anteriormente, un cifrado por flujo es la elección deseable puesto que ésta es mucho más rápida que un cifrado de bloque.
Autenticación En algunas modalidades, se puede utilizar las técnicas de autenticación para asegurar la integridad y la identidad de la tarjeta de video. Las metas importantes para asegurar la aplicación del software que va a interactuar con una tarjeta de video son que la aplicación sea capaz de autenticar de manera confiable que (1) la comunicación realmente esté en comunicación con una tarjeta de video y no una pieza de software que está emulando a la tarjeta de video, y (2) que la aplicación esté realmente en comunicación con una tarjeta de video que obedece o se conforma a reglas definidas previamente asociadas con la reproducción de los datos de pixeles . Las técnicas de autenticación se pueden implementar en un par de maneras diferentes - por ejemplo a través de la certificación criptográfica y otros protocolos de comunicación . La certificación criptográfica pertenece a la construcción de una tarjeta de video que está equipada con una clave certificada y un certificado digital. Usando esta clave y el certificado, la tarjeta de video puede establecer una conversación criptográfica con aplicaciones de software seguras. Por ejemplo, se puede usar el certificado digital para encriptar las comunicaciones que se realizaron con la aplicación segura. Para implementar la certificación criptográfica, cada tarjeta de video puede tener un chip IC de seguridad separado que es fabricado por una entidad confiable. Las técnicas de certificación criptográfica son bien conocidas y entendidas por aquellas personas con experiencia en la técnica. De conformidad con lo anterior, y por consideración a la brevedad, la certificación criptográfica no se describe con detalle en esta. Otros medios de autenticación se puede asociar con un protocolo seguro que se establece entre las aplicaciones seguras y la tarjeta de video. Los protocolos seguros le pueden permitir a la aplicación que tenga algunas seguridades de que si está comunicándose con una tarjeta de video válida. Por ejemplo, la aplicación confiable puede emitir un reto a la tarjeta de video para que se identifique a si misma y la tarjeta puede responder con una respuesta de que si es una tarjeta de video confiable. Se pueden utilizar diversas técnicas de protocolo seguro conocidas . Se proporcionan diversas ventajas por medio de las modalidades descritas anteriormente. Primero, se proporcionan técnicas que pueden asegurar que los datos (tanto dentro como fuera de una tarjeta de video están protegidos contra ataques de software. La protección se suministra en forma de técnicas de encriptación que se pueden utilizar para encriptar los datos que residen en la superficie primaria de la tarjeta de video. Entonces la desencriptación puede realizarse en un punto en la linea de procesamiento en donde no existe acceso al software. Por consiguiente, cualesquiera ataques de lectura por el software intruso rendirá datos encriptados y esencialmente inútiles. Consecuentemente, los datos de pixeles se pueden mantener confidenciales. Adicionalmente, diversas técnicas puedan habilitar la integridad de los datos que se van a preservar. Esto es, en caso de un ataque de modificación de datos, se pueden emplear diferentes métodos de detección para asegurar que las notificaciones apropiadas sean generadas (tanto las notificaciones de aplicación como las notificaciones de usuarios). Adicionalmente , se logran ventajas al estar capacitado para definir regiones seguras de la superficie primaria que son identificadas por medio de una geometría en particular.
Funcionalidad Auxiliar Por Pixel En algunas modalidades, puede ser deseable proporcionar una funcionalidad en la granularidad de los pixeles individuales. Por ejemplo, las regiones seguras de la superficie primaria no se superponen típicamente. En algunas instancias, sin embargo, los usuarios pudieran desear mover las ventanas alrededor en su despliegue visual de tal manera que éstas si se superpongan. Las regiones de superposición pueden inyectar conveniencias adicionales de diseño en el diseño de los componentes que realizan las funciones de encriptación y desencriptación . Como por ejemplo, note la Figura 8. En esa, se muestra una pantalla de despliegue visual como una que un usuario vería generalmente en 800. Se proporciona una ventana segura 802 y, adicionalmente, se muestra una ventana no segura 804 para superponerse con la esquina derecha inferior de la ventana segura para definir una región de superposición 806. Un problema que pudiera surgir de una situación como esta es el siguiente. La región 806, cuando está incorporada en la superficie primaria de la tarjeta de video, no incluye datos encriptados. Con todo, la región adyacente que corresponde a la ventana segura 802 si contiene datos encriptados. Si no se hacen los ajustes para tomar lo anterior en cuenta, entonces es posible que el desencriptador pudiera desencriptar los datos de pixeles asociados con la región de superposición 806. Para empezar, como estos datos de pixeles no fueron encriptados, la desencriptación de los datos suministrará datos erróneos. De conformidad con lo anterior, las modalidades que en breve se van a describir proporcionan métodos y sistemas que habilitan la funcionalidad por pixel. En un ejemplo, se puede suministrar la seguridad por pixel. La Figura 9 muestra una representación diagramática de los datos de pixeles generalmente en 900. En este ejemplo, los datos de pixeles comprenden 32 bits de datos. Los valores de Rojo (R, por su sigla en inglés), Verde (G, por su sigla en inglés) , y Azul (B, por su sigla en inglés) están indicados como de ocho bits cada uno. Se debe notar que mientras que los datos de pixeles ilustrados comprenden 32 bits por pixel, los datos de pixeles pueden comprender más o menos bits por pixel. Tomen nota en este ejemplo, que los ocho bits son sobrantes - designados en ésta como "Auxiliar". Con el objeto de hacer los accesos a la memoria más eficientes, los GPUs prefieren leer los datos en porciones que son múltiplos de poderes de 2. Por consiguiente los datos de 24 bits se leen como bloques de 32 bits, dejando frecuentemente 8 bits 'sin usar' pero que siempre se leen y se escriben con los bits 'usados'. Estos bits auxiliares se pueden usar nuevamente para especificar diversas funciones auxiliares que se pueden implementar en conexión con pixeles individuales que se van a reproducir a una pantalla de despliegue visual. Los ejemplos de las funciones auxiliares pueden incluir, sin limitación, información alfa o de transparencia, información de profundidad, información de identificación de región, o información de clave de color (para indicar las regiones a substituir con otros datos) . Otros formatos de video comunes usan 16 bits por pixel en lugar de 24 o 32 bits por pixel . Por ejemplo, los datos RGB se pueden almacenar como 5 bits por pixel, dejando un solo bit sin usar que se podría usar para especificar 2 funciones auxiliares. Una manera de implementar la funcionalidad auxiliar es proporcionar una tabla, tal como la tabla 902 que hace referencia o especifica la funcionalidad auxiliar. Por ejemplo, usando ocho bits para especificar las funciones auxiliares puede permitir que se especifiquen hasta 256 funciones auxiliares. De conformidad con lo anterior, cuando se procesan los datos de pixeles, se pueden procesar los bits de los datos de pixeles que pertenecen a las funciones auxiliares para accesar e implementar diversas funciones auxiliares . La Figura 10 es un diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. El método se puede implementar en cualesquiera hardware, software, microprogramación o una combinación de las mismas que sea adecuado. En el ejemplo presente, el método se puede implementar, cuando, menos en parte, por medio de una tarjeta de video configurada adecuadamente - un ejemplo del cual se dio anteriormente. El paso 1000 suministra datos de pixeles que tienen un número definido de bits por pixel. En el ejemplo de la Figura 9, existen 32 bits por pixel. No obstante, se puede utilizar cualquier número adecuado de bits por pixel. El paso 1002 usa uno o más bits de los datos de pixeles para especificar una función auxiliar. En el ejemplo de la Figura 9, se usan ocho bits para especificar funciones auxiliares a través del uso del llamado "canal alfa" (el cuarto canal 'no usado') . Por medio de usar los ocho bits del canal alfa, se especifican 256 funciones auxiliares separadas. El paso 1004 procesa los bits para acceder a la función auxiliar. Este paso se puede implementar por medio de usar el valor de los bits auxiliares como un Índice en una tabla de función auxiliar tal como la tabla 902 (Figura 9) . Entonces la tabla hace referencia, para valores individuales, a una función auxiliar que se puede implementar en conexión con los datos de pixeles para un pixel en particular. La referencia en la tabla 902 puede ser un apuntador a la clave de software que implementa la función auxiliar, o éste puede comprender parte de, o la misma función auxiliar en su totalidad. Entonces el paso 1006 implementa la función auxiliar. Si la función 0 especificada es una función nula, entonces las aplicaciones anteriores automáticamente serán compatibles con el nuevo esquema que utiliza las nuevas funciones auxiliares.
Seguridad Por Pixal Los bits auxiliares de los datos de pixeles se pueden usar para suministrar la funcionalidad de desencriptación a nivel del pixel. Por ejemplo, asumiendo que existe una región segura en la superficie primaria que se usa para mantener protegidos los datos de pixeles deseados. Estos datos de pixeles se pueden encriptar, a nivel de pixel, usando una clave de encriptación . Ahora asumiendo que los bits auxiliares de los datos de pixeles encriptados especifican una clave de desencriptación que se puede utilizar para desencriptar los datos de pixeles. Note, por ejemplo, la Figura 11 la cual muestra una tabla de función auxiliar por pixel 1100. En ésta, cada valor de la tabla está asociado con una clave particular. Por ejemplo, el valor "1" está asociado con "Clave 1", el valor "2" está asociado con "Clave 2" y asi sucesivamente. De conformidad con lo anterior, cuando los datos de pixeles auxiliares indican que una clave en particular está asociada con los datos de pixeles, entonces el desencriptador puede accesar la clave asociada y usar la clave para desencriptar los datos de pixeles (tipicamente 0). Los datos de pixeles auxiliares también pueden mantener una valor que indique que los datos de pixeles no están encriptados . En este caso, el desencriptador simplemente puede pasar los datos de pixeles asociados al convertidos de despliegue visual para procesamiento adicional, permitiendo que los datos no encriptados de las aplicaciones se integren limpiamente con el nuevo esquema. La tabla de clave por pixel puede mantener claves individuales que se pueden usar para desencriptar los datos asociados de pixeles encriptados asociados, o puede mantener las referencias a claves que se pueden usar para desencriptar los datos asociados de pixeles encriptados . La tabla también puede mantener datos relacionados auxiliares secundarios (sin seguridad) tal como valores alfa. Esto permite el uso renovado selectivo de valores entre la seguridad y el uso original previo del canal auxiliar. Por ejemplo, los valores 1 hasta el 3 se podrían usar para especificar claves (con su propio valor alfa) , mientras que deja valores 0 y 4 hasta 255 aun disponible para especificar sus valores alfa originales.
La Figura 12 es una diagrama de flujo que describe los pasos en un método de conformidad con una modalidad. El método se puede implementar en cualesquiera hardware, software, microprogramación o una combinación de las mismas que sea adecuado. En el ejemplo presente, el método se puede implementar, cuando menos en parte, por medio de una tarjeta de video configurada adecuadamente - un ejemplo del cual se dio anteriormente. El paso 1200 encripta los datos de pixeles que están asociados con pixeles individuales. Convenientemente la encriptación se realiza en el nivel de pixel . Este paso se puede implementar de cualquier manera que sea adecuada. Por ejemplo, una aplicación segura puede ocasionar que los datos de pixeles sean encriptados . Alternativamente, se pueden utilizar otros procesos para encriptar los datos de pixeles, ejemplos de cuales se dan anteriormente. El paso 1202 asocia los datos auxiliares con los datos de pixeles. Los datos auxiliares especifican una o más claves de desencriptación que se pueden usar para desencriptar los datos de pixeles. En algunos casos, los datos auxiliares se pueden considerar que comprenden los datos de pixeles mismos puesto que comprenden una porción de los bits que comprenden los datos de pixeles (por ejemplo el canal alfa) . El paso 1204 recibe los datos de pixeles incluyendo cualesquiera datos auxiliares asociados. Este paso se puede implementar, por ejemplo, por medio de una desencriptador configurado adecuadamente. El paso 1206 determina si los datos de pixeles necesitan ser desencriptados . Esto paso se puede implementar por medio de examinar los datos auxiliares. Si los datos auxiliares contienen valores que están asociados con la funcionalidad de desencriptación, entonces la desencriptación es necesaria. Si la desencriptación es necesaria, entonces el paso 1208 usa los datos auxiliares para acceder una clave de desencriptación para los datos de pixeles. Este paso se puede implementar por medio de mantener una tabla, tal como la tabla 1100, y usar la tabla para acceder la clave de desencriptación apropiada. Entonces el paso 1210 desencripta los datos de pixeles usando la clave de desencriptación. Si, por otro lado, el paso 1206 determina que no es necesaria la desencriptación, entonces el paso 1212 no desencripta los datos . El paso se puede implementar por medio de asignar un valor particular (por ejemplo 0) a los datos auxiliares y usar ese valor para indicar que no es necesaria la desencriptación. Entonces los datos se pueden pasar al convertidor de despliegue visual para su procesamiento adicional . Una ventaja de la encriptación por pixel selectiva es que las aplicaciones pueden especificar regiones de encriptación no rectangulares. La función de encriptación nula (índice 0) puede especificar cada pixel dentro de una región rectangular que no está encriptada. Tabla Secundaria Adicionalmente a la tabla descrita anteriormente, se puede suministrar una llamada tabla secundaria para contener información adicional que es útil cuando se procesan los datos de pixeles. Como por ejemplo, note la Figura 13 en donde se muestra una tabla de pixeles secundaria 1300. En este ejemplo, cada pixel en una región segura de la superficie primaria puede tener una entrada asociada en esta tabla. Por consiguiente, la columna "Pixel" identifica una región de pixel particular de la superficie primaria. En este ejemplo, la tabla 1300 incluye una columna "Procesar ID" la cual se puede usar para identificar un proceso o entidad que tiene la "propiedad" de la región particular. Esta columna se puede usar, por ejemplo, para restringir el acceso a los datos de pixeles particulares a solamente aquellas entidades que deben tener acceso.
Integridad de Datos Adicionalmente o alternativamente, la tabla 1300 se puede usar para verificar la integridad de los datos de pixeles. Por ejemplo, se puede computar un hash de los datos de pixeles no encriptados y almacenarlos en la columna "Hash Esperado" de la tabla 1300. Entonces, cuando se desencripten los datos de pixeles por, por ejemplo el desencriptado , se puede computar otro hash de los datos de pixeles desencriptados y colocados en la columna "Hash Actuales". Por medio de comparar el hash esperado con el hash actual, una aplicación segura o el desencriptador pueden cerciorarse si cualesquiera de los datos de pixeles han sido manipulados o cambiados. Si, por ejemplo, una aplicación intrusa manipula exitosamente los datos de pixeles no encriptados, entonces la comparación de hash indicará que esto ha ocurrido. Por otro lado, si una aplicación intrusa manipula los datos de pixeles encriptados, los datos se desencriptarán de manera diferente. Entonces, cuando se computa un hash actual por los datos desencriptados, el hash actual muy seguramente no se comparará favorablemente con el hash esperado. El hardware de desencriptación puede notificar a la aplicación (o un agente a nombre de la aplicación) del compromiso de los datos. La notificación a la entidad de encriptación puede ocurrir a través de un canal seguro. Se pueden utilizar otras técnicas para asegurar la integridad de los datos en las regiones seguras. Por ejemplo, un atacante pudiera por alguna razón tener direccionabilidad por pixel y por consiguiente ser capar de manipular los datos de pixeles (incluyendo los datos auxiliares) . Para dirigirnos a esta situación, se puede implementar un proceso el cual, para cada región segura, obliga a los datos auxiliares a que asuman un valor que ocasionará que los datos sean desencriptados . De conformidad con lo anterior, esto minimizará el efecto de cualesquiera aplicaciones intrusas que atacan los datos auxiliares por medio de, por ejemplo, cambiar los datos a un valor que ocasionara que éste no sea desencriptado . Algunas de las ventajas de la funcionalidad auxiliar por pixel (incluyendo seguridad por pixel que incluye, sin limitaciones, que las tablas asociadas (por ejemplo la tabla de claves) sean relativamente pequeñas y con posibilidad de guardarse en memorias caché. Adicionalmente, no se puede requerir amplitud de banda de video adicional cuando los datos auxiliares comprenden parte de los bits que ya están asignados por los datos de pixeles (por ejemplo el canal alfa) . Adicionalmente, los valores alfa aun pueden ser usados en caso de que el canal alfa no sea usado para apoyar la funcionalidad auxiliar. Adicionalmente, el control de claves por cuadro por pixel puede permitir transiciones de claves complejas. Esto es, las claves se pueden poner en ciclos por cuadro, lo cual puede reducir los temas cuando se cambian las claves mientras se reproduce el video. Las técnicas anterior también se pueden usar con datos no RGB, con copias de memoria directa al escritorio, y con superposiciones de video . Por último, cuando se mueve una región, el Índice de encriptación auxiliar se mueve con los datos de video, asegurando que la información de encriptación esté perfectamente sincronizada y no requiere de cambios de hardware adicionales.
Conolusión Los diferentes métodos y sistemas descritos anteriormente suministran un canal seguro para ejecutar el software en una computadora anfitriona, asi como dirigir y proporcionar soluciones para un modelo de ataque en el que el software intruso que se ejecuta en la computadora anfitriona trata de obtener inapropiadamente o de otra manera manipular los datos. A través de las técnicas inventivas, se pueden mantener confidenciales los datos de video que se van a procesar y reproducir en un despliegue visual del usuario y, en muchas instancias, se puede proteger la integridad de los datos . Aun cuando las invención ha sido descrita en un leguaje especifico a las características estructurales y/o pasos metodológicos, se debe entender que la invención que está definida en las reivindicaciones anexas no está necesariamente limitada a las características específicas o los pasos descritos. Más bien, las características específicas y los pasos se publican como formas preferidas para implementar la invención reivindicada.

Claims (55)

REIVINDICACIONES
1. Un método que comprende: proporcionar datos de video encriptados en una tarjeta de video; y desencriptar los datos de video encriptados en un punto en un procesamiento de datos en donde no exista un acceso programático a los datos de video desencriptados .
2. El método de la reivindicación 1, en donde la acción de desencriptar se realiza antes de suministrar los datos de video desencriptados a un convertidor de despliegue visual en la tarjeta de video.
3. El método de la reivindicación 1 , en donde la acción de desencriptar se realiza antes de suministrar los datos de video desencriptados a un RAMDAC en la tarjeta de video .
4. El método de la reivindicación 1 , en donde la acción de desencriptar se realiza por medio de un desencriptador del hardware en la tarjeta de video.
5. El método de la reivindicación 1, en donde la acción de desencriptar se realiza por medio de un desencriptador intermediario entre una tarjeta de video GPU y RAMDAC en la tarjeta de video.
6. Uno o más conjuntos de instrucciones legibles por computadora de esos los cuales, cuando se ejecutan por una o más computadoras, ocasionan que la una o más computadoras implementen el método de la reivindicación 1.
7. Un sistema que comprende: un elemento para suministrar datos de video encriptados en una tarjeta de video; un elemento para desencriptar los datos de video encriptados en la tarjeta de video; y un elemento para negar el acceso al software de los datos de video desencriptados .
8. El sistema de la reivindicación 7, en donde esos elementos para suministrar los datos de video encriptados comprenden un cifrado por flujo.
9. El sistema de la reivindicación 7, en donde esos elementos para suministrar los datos de video encriptados comprenden un cifrado por bloques .
10. El sistema de la reivindicación 7, en donde esos elementos para suministrar los datos de video encriptados comprenden un desencriptador del hardware en la tarjeta de video.
11. Un sistema que comprende: una unidad procesadora de gráficos para procesar los datos de video que se van a reproducir en un monitor; una memoria asociada operativamente con la unidad procesadora de gráficos para mantener los datos que se van o han sido procesados por la unidad procesadora de gráficos ; un convertidor de despliegue visual para convertir los datos digitales a señales para usar en la reproducción de los datos en el monitor; y un desencriptador configurado para desencriptar los datos de pixeles para aprovisionar al convertidor de despliegue visual, el desencriptador que está dispuesto en un punto del procesamiento de los datos en donde no existe un acceso programático.
12. El sistema de la reivindicación 11, en donde la memoria comprende una superficie primaria que contiene datos que se van a reproducir en el monitor, la superficie primaria que comprende una o más regiones seguras en las que se pueden colocar los datos encriptados .
13. El sistema de la reivindicación 11, que adicionalmente comprende un procesador de control en la tarjeta de video configurada para impartir habilidades al desencriptador para la desencriptacion.
14. El sistema de la reivindicación 13, en donde el procesador de control incluye un administrador de clave para administrar una o más claves que se pueden suministrar al desencriptador para desencriptar los datos de pixeles encriptados.
15. El sistema de la reivindicación 13 que adicionalmente comprende un canal seguro que enlaza comunicativamente al procesador de control con el desencriptador .
16. El sistema de la reivindicación 13, en donde el procesador de control comprende un chip de circuito integrado separado en la tarjeta de video.
17. El sistema de la reivindicación 11, en donde el desencriptador comprende un componente separado en la tarjeta de video.
18. Un sistema que comprende: un elemento del procesador, en una tarjeta de video, para procesar los datos de video que se van a reproducir en un monitor; un elemento de la memoria, en la tarjeta de video, asociada operablemente con el elemento del procesador para mantener los datos que se van a o que ya se han procesado por medio del elemento del procesador; un elemento del convertidor, en la tarjeta de video, para convertir los datos diqitales a señales para usar en la reproducción de los datos en el monitor; un elemento del desencriptador, en la tarjeta de video, para desencriptar los datos de pixeles para provisión al elemento del convertidor; y un elemento, en la tarjeta de video, para negar el acceso a una o más aplicaciones de software a los datos de pixeles desencriptados .
19. Un sistema que comprende: una tarjeta de video; una memoria en la tarjeta de video una porción de la cual comprende una superficie primaria que contiene datos que se van a reproducir en un monitor; una o más regiones seguras en la superficie primaria que almacena los datos de pixeles encriptados ; y cuando menos una clave asociada con una o más regiones y configurada para habilitar la desencriptación de los datos de pixeles encriptados.
20. El sistema de la reivindicación 19, en donde las regiones seguras individuales corresponden a ventanas seguras que se pueden suministrar en el monitor.
21. El sistema de la reivindicación 19, en donde las regiones seguras individuales tienen claves asociadas individuales .
22. El sistema de la reivindicación 21, en donde existen regiones seguras múltiples cada una con una clave diferente .
23. El sistema de la reivindicación 19 que adicionalmente comprende un desencriptador en la tarjeta de video que está configurado para desencriptar los datos de pixeles encriptados usando una clave asociada.
24. El sistema de la reivindicación 23, en donde el desencriptador desencripta los datos de pixeles encriptados en un punto del procesamiento en donde no existe un acceso programático a los datos de pixeles desencriptados .
25. El sistema de la reivindicación 23, en donde el desencriptador comprende un desencriptador del hardware.
26. El sistema de la reivindicación 19, en donde se puede autenticar la tarjeta de video.
27. El sistema de la reivindicación 26, en donde la tarjeta de video comprende un certificado digital que se puede usar para la autenticación.
28. El sistema de la reivindicación 26, en donde la tarjeta de video está configurada para responder a los retos para la autenticación.
29. El sistema de la reivindicación 19, en donde la tarjeta de video comprende una clave para encriptar las comunicaciones con una o más aplicaciones seguras.
30. Un método que comprende: definir una o más regiones seguras de una superficie primaria en la memoria de una tarjeta de video: asociar cuando menos una clave con esa una o más regiones seguras adecuadas para usar en la encriptación de datos de pixeles que están almacenados en esa una o más regiones seguras; encriptar los datos de pixeles con esa cuando menos una clave; y suministrar los datos de pixeles encriptados en esa una o más regiones seguras .
31. El método de la reivindicación 30, en donde una o más regiones seguras son rectangulares de forma.
32. El método de la reivindicación 30, en donde la clave comprende una que se puede usar para encriptar con un cifrado por flujo.
33. El método de la reivindicación 30, en donde la clave comprende una que se puede usar para encriptar con un cifrado por bloques.
34. El método de la reivindicación 30, en donde: el acto de definir define regiones seguras múltiples; y el acto de asociar asocia una clave diferente con cada región segura.
35. El método de la reivindicación 30, en donde el acto de encriptar se realiza usando el cifrado por flujo que está restringido por rango a una o más regiones seguras .
36. Uno o más conjuntos de instrucciones legibles por computadora de esos los cuales, cuando se ejecutan por medio de una o más computadoras, ocasionan que una o más computadoras implementen el método de la reivindicación 30.
37. Un sistema que comprende: un elemento para definir una o más regiones seguras de una superficie primaria en la memoria de una tarjeta de video; un elemento para asociar cuando menos una clave con esa una o más regiones adecuadas para usar en la encriptación de los datos de pixeles que están almacenados en esa una o más regiones seguras; un elemento para encriptar los datos de pixeles con esa cuando menos una clave; y un elemento para suministrar los datos de pixeles encriptados en esa una o más regiones seguras.
38. Un método que comprende: proporcionar datos encriptados en una región segura de una superficie primaria de una tarjeta de video; proporcionar una clave asociada con la región segura que se puede usar para desencriptar los datos encriptados; y usar la clave para desencriptar los datos encriptados en la región segura de la superficie primaria.
39. El método de la rei indicación 38, en donde el acto de usar la clave se realiza en un punto del procesamiento en donde no existe acceso programático a los datos encriptados.
40. El método de la reivindicación 38, en donde el acto de suministrar la clave se realiza por medio del procesador de control en la tarjeta de video.
41. El método de la reivindicación 38, en donde el acto de usar la clave para desencriptar los datos encriptados se realiza por medio de un desencriptador del hardware en la tarjeta de video.
42. El método de la reivindicación 38, en donde el acto de usar la clave para desencriptar los datos encriptados se realiza por medio de un desencriptador en la tarjeta de video que puede deducir la geometria de la región segura .
43. El método de la reivindicación 38 que adicionalmente comprende proporcionar los datos desencriptados a un convertidor de despliegue visual para reproducir en una pantalla de despliegue visual.
44. El método de la reivindicación 38, en donde existen múltiples regiones seguras diferente, y el acto de proporcionar la clave suministra la clave que se va a asociar con cada región segura.
45. El método de la reivindicación 38, en donde existen múltiples regiones seguras diferentes y el acto de proporcionar la clave comprende suministrar claves múltiples, cada región segura que está asociada con una clave diferente.
46. El método de la reivindicación 38, en donde el acto de usar la clave para desencriptar se realiza usando un cifrado por flujo.
47. El método de la reivindicación 38, en donde el acto de usar la clave para desencriptar se realiza usando un cifrado por flujo de rango restringido.
48. El método de la reivindicación 38, en donde el acto de usar la clave para desencriptar se realiza usando un cifrado por bloques.
49. Uno o más conjuntos de instrucciones legibles por computadora de los mismos los cuales, cuando son ejecutados por una o más computadoras, ocasionan que una o más computadoras implementen el método de la reivindicación 38.
50. Un sistema que comprende: un elemento para suministrar datos encriptados en una región segura de una superficie primaria de una tarjeta de video ; un elemento para suministrar una clave asociada con la región segura que se puede usar para desencriptar los datos encriptados; y un elemento para usar la clave para desencriptar los datos encriptados en la región segura de la superficie p imaria .
51. Un método que comprende: proporcionar datos encriptados en una región segura de la superficie primaria de una tarjeta de video, la región segura que tiene una geometría asociada; proporcionar una clave asociada con la región segura que se puede usar para desencriptar los datos encriptados; informar al desencriptador en la tarjeta de video de la geometría de la región segura; proporcionar la clave al desencriptador; y desencriptar, con el desencriptador, los datos encriptados en la región segura de la superficie primaria.
52. El método de la reivindicación 51, en donde el acto de informar se realiza en respuesta a una ventana desplegada visualmente en un monitor de despliegue visual y asociada con la región segura que se está arrastrando y soltando en una ubicación diferente en el monitor de despliegue visual.
53. Uno o más conjuntos de instrucciones legibles por computadora de los mismas los cuales, cuando son ejecutados por una o más computadoras, ocasionan que una o más computadoras implementen el método de la reivindicación 51.
54. Un método que comprende: proporcionar datos encriptados en la región segura de una superficie primaria de una tarjeta de video; proporcionar una clave asociada con la región segura que se puede usar para desencriptar los datos encriptados; usar la clave para desencriptar los datos encriptados en la región segura de la superficie primaria; y detectar si cualesquiera de los datos han sido modificados .
55. El método de la reivindicación 54, en donde el acto de detectar se realiza usando información de autenticación que está asociada con los datos encriptados. 57. El método de la reivindicación 56, en donde la información de autenticación comprende un formato de datos seguros en donde se requiere que los pixeles determinados previamente tengan valores determinados previamente . 58. El método de la reivindicación 54, en donde el acto de detectar se realiza usando una comparación de hash de hashes de los datos no encriptados. 59. El método de la reivindicación 54, en donde se regresa la notificación a través de un canal seguro a una entidad encriptadora .
MXPA03004371A 2002-06-24 2003-05-16 Sistemas y metodos para asegurar la salida de tarjetas de video. MXPA03004371A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/178,804 US8155314B2 (en) 2002-06-24 2002-06-24 Systems and methods for securing video card output

Publications (1)

Publication Number Publication Date
MXPA03004371A true MXPA03004371A (es) 2005-02-14

Family

ID=27733938

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA03004371A MXPA03004371A (es) 2002-06-24 2003-05-16 Sistemas y metodos para asegurar la salida de tarjetas de video.

Country Status (14)

Country Link
US (2) US8155314B2 (es)
EP (1) EP1378809A3 (es)
JP (1) JP2004062885A (es)
CN (1) CN100350395C (es)
AU (1) AU2003204378B2 (es)
BR (1) BR0301721A (es)
CA (1) CA2427367A1 (es)
MX (1) MXPA03004371A (es)
MY (1) MY140378A (es)
NO (1) NO20032888L (es)
PL (1) PL360330A1 (es)
RU (1) RU2327215C2 (es)
TW (1) TW200401234A (es)
ZA (1) ZA200303552B (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0212308D0 (en) * 2002-05-28 2002-07-10 Symbian Ltd Trusted user interface for a secure mobile wireless device
US8155314B2 (en) 2002-06-24 2012-04-10 Microsoft Corporation Systems and methods for securing video card output
US20070277036A1 (en) * 2003-05-23 2007-11-29 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US7636857B2 (en) 2004-05-24 2009-12-22 Interdigital Technology Corporation Data-mover controller with plural registers for supporting ciphering operations
WO2006034713A1 (en) * 2004-09-29 2006-04-06 Sagem Denmark A/S Secure display for atm
WO2006107777A2 (en) * 2005-04-01 2006-10-12 Mastercard International Incorporated Dynamic encryption of payment card numbers in electronic payment transactions
US8190918B2 (en) * 2006-11-13 2012-05-29 Disney Enterprises, Inc. Interoperable digital rights management
CN101632084B (zh) 2007-03-13 2012-05-02 Nxp股份有限公司 对至少二维的数据集的加密和解密
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
WO2010071947A1 (en) * 2008-12-24 2010-07-01 The Commonwealth Of Australia Digital video guard
WO2010131287A1 (ja) * 2009-05-11 2010-11-18 富士通株式会社 画像暗号化・復号装置、方法、及びプログラム
US9589159B2 (en) * 2009-06-26 2017-03-07 Intel Corporation Creating secure communication channels between processing elements
KR101295879B1 (ko) * 2009-08-19 2013-08-16 한국전자통신연구원 패스워드 해독 장치 및 그것의 패스워드 해독 방법
US20110252153A1 (en) * 2010-04-09 2011-10-13 Zvi Vlodavsky Securely providing session key information for user consent to remote management of a computer device
US8458788B2 (en) 2010-05-04 2013-06-04 Synaptics Incorporated System and method for authentication of input devices
US8693687B2 (en) * 2010-10-03 2014-04-08 Himax Media Solutions, Inc. Method and apparatus of processing three-dimensional video content
CN104011732B (zh) * 2011-12-30 2018-06-15 英特尔公司 双合成域高级加密标准存储器加密引擎
US20140067673A1 (en) * 2012-09-05 2014-03-06 Mads Lanrok Trusted user interface and touchscreen
CN103809671A (zh) * 2012-11-09 2014-05-21 辉达公司 图形卡及用于其的基板和核心板
US20140320527A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Hardware glyph cache
US9111123B2 (en) 2013-06-28 2015-08-18 International Business Machines Corporation Firmware for protecting data from software threats
WO2017062541A1 (en) * 2015-10-06 2017-04-13 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
AU2017204137B2 (en) * 2015-12-09 2021-12-23 Xingchang Zhou Data transmission method and data transmission apparatus
FR3048538B1 (fr) * 2016-03-03 2018-11-09 Ingenico Group Procede d'execution et de traitement de donnees, dispositif et programme d'ordinateur correspondant
US20190057639A1 (en) * 2017-08-17 2019-02-21 Shenzhen China Star Optoelectronics Semiconductor Display Technology Co., Ltd. Display device and driving method thereof
CN107526562A (zh) * 2017-08-17 2017-12-29 深圳市华星光电半导体显示技术有限公司 显示装置及其驱动方法
US10909926B2 (en) * 2018-05-08 2021-02-02 Apple Inc. Pixel circuitry and operation for memory-containing electronic display
CN111125113B (zh) * 2019-12-25 2020-09-15 中科三清科技有限公司 空气污染物数据的存储方法和装置
US11770385B2 (en) * 2019-12-31 2023-09-26 Paypal, Inc. Systems and methods for malicious client detection through property analysis

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12432A (en) * 1855-02-27 Henry
CA1238427A (en) 1984-12-18 1988-06-21 Jonathan Oseas Code protection using cryptography
US4962533A (en) * 1989-02-17 1990-10-09 Texas Instrument Incorporated Data protection for computer systems
GB8908399D0 (en) 1989-04-13 1989-06-01 British Telecomm Optical fibre back plane
IT1248151B (it) 1990-04-27 1995-01-05 Scandic Int Pty Ltd Dispositivo e metodo per convalidazione di carta intelligente
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5297206A (en) * 1992-03-19 1994-03-22 Orton Glenn A Cryptographic method for communication and electronic signatures
US5321749A (en) * 1992-09-21 1994-06-14 Richard Virga Encryption device
US5572235A (en) 1992-11-02 1996-11-05 The 3Do Company Method and apparatus for processing image data
US5577125A (en) * 1993-06-14 1996-11-19 International Business Machines Corporation Graphical manipulation of encryption
EP0760978B1 (en) * 1994-05-26 2004-09-29 The Commonwealth Of Australia Secure computer architecture
US5881287A (en) * 1994-08-12 1999-03-09 Mast; Michael B. Method and apparatus for copy protection of images in a computer system
US5537467A (en) * 1994-08-23 1996-07-16 Bell Communications Research, Inc. Method for forwarding a call to a temporarily utilized portable telephone
EP0715241B1 (en) * 1994-10-27 2004-01-14 Mitsubishi Corporation Apparatus for data copyright management system
US5727062A (en) * 1995-07-06 1998-03-10 Ritter; Terry F. Variable size block ciphers
US5859920A (en) * 1995-11-30 1999-01-12 Eastman Kodak Company Method for embedding digital information in an image
US5719937A (en) 1995-12-06 1998-02-17 Solana Technology Develpment Corporation Multi-media copy management system
JPH09259044A (ja) 1996-03-21 1997-10-03 Fuji Xerox Co Ltd 機密保護機能付き情報処理装置および機密保護方法
US6055314A (en) * 1996-03-22 2000-04-25 Microsoft Corporation System and method for secure purchase and delivery of video content programs
US5825877A (en) 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US5825879A (en) * 1996-09-30 1998-10-20 Intel Corporation System and method for copy-protecting distributed video content
GB9704638D0 (en) * 1997-03-06 1997-04-23 Lsi Logic Corp Digital video broadcasting
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US5898779A (en) * 1997-04-14 1999-04-27 Eastman Kodak Company Photograhic system with selected area image authentication
JPH10293722A (ja) 1997-04-17 1998-11-04 Taisei Corp データ保護装置
US6064764A (en) * 1998-03-30 2000-05-16 Seiko Epson Corporation Fragile watermarks for detecting tampering in images
US6047342A (en) * 1998-03-31 2000-04-04 Apple Computer, Inc. PC processing card for decoding operations
US6044187A (en) * 1998-04-01 2000-03-28 Duck; Gary S. Multi-port fiber optical device
US6424430B1 (en) * 1998-04-06 2002-07-23 Adobe Systems Incorporated Rendering of objects on graphical rendering devices as clipped images
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
US7233619B1 (en) * 1998-12-21 2007-06-19 Roman Kendyl A Variable general purpose compression for video images (ZLN)
US6330624B1 (en) * 1999-02-09 2001-12-11 International Business Machines Corporation Access limiting to only a planar by storing a device public key only within the planar and a planar public key only within the device
US20020012432A1 (en) 1999-03-27 2002-01-31 Microsoft Corporation Secure video card in computing device having digital rights management (DRM) system
CA2338634C (en) * 1999-05-28 2007-06-26 Matsushita Electric Industrial Co., Ltd. A semiconductor memory card, playback apparatus, recording apparatus, playback method, recording method, and computer-readable recording medium
US6731756B1 (en) * 1999-06-21 2004-05-04 Elisar Software Corporation, Inc. Method for securing video images
JP2001103280A (ja) 1999-09-30 2001-04-13 Canon Inc 情報処理方法とその装置
GB9923804D0 (en) * 1999-10-08 1999-12-08 Hewlett Packard Co Electronic commerce system
JP3725384B2 (ja) * 1999-11-24 2005-12-07 富士通株式会社 認証装置、認証方法及びその装置での処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体
US7047305B1 (en) * 1999-12-09 2006-05-16 Vidiator Enterprises Inc. Personal broadcasting system for audio and video data using a wide area network
FR2806231B1 (fr) * 2000-03-08 2004-10-15 France Telecom Procede de transmission d'informations avec controle d'acces en filigrane numerique et dispositifs de mise en oeuvre
US7007304B1 (en) 2000-09-20 2006-02-28 Intel Corporation Method and apparatus to improve the protection of information presented by a computer
US6859832B1 (en) * 2000-10-16 2005-02-22 Electronics For Imaging, Inc. Methods and systems for the provision of remote printing services over a network
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP2002229859A (ja) * 2001-01-31 2002-08-16 Toshiba Corp ディスク記憶装置及び同装置に適用する認証方法
US7184546B2 (en) 2001-02-13 2007-02-27 Arkion S.L. Method based on an algorithm capable of being graphically implemented to be used for the generation of filtering of data sequences and crytographic applications
US6934389B2 (en) 2001-03-02 2005-08-23 Ati International Srl Method and apparatus for providing bus-encrypted copy protection key to an unsecured bus
US7055038B2 (en) * 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
US6848046B2 (en) * 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US7007025B1 (en) 2001-06-08 2006-02-28 Xsides Corporation Method and system for maintaining secure data input and output
US20030017846A1 (en) * 2001-06-12 2003-01-23 Estevez Leonardo W. Wireless display
US6925180B2 (en) * 2001-09-27 2005-08-02 Sony Corporation PC card recorder
US7594265B2 (en) * 2001-11-14 2009-09-22 Ati Technologies, Inc. System for preventing unauthorized access to sensitive data and a method thereof
US7065651B2 (en) * 2002-01-16 2006-06-20 Microsoft Corporation Secure video card methods and systems
US8155314B2 (en) 2002-06-24 2012-04-10 Microsoft Corporation Systems and methods for securing video card output
US7206940B2 (en) * 2002-06-24 2007-04-17 Microsoft Corporation Methods and systems providing per pixel security and functionality
US7293178B2 (en) * 2002-12-09 2007-11-06 Microsoft Corporation Methods and systems for maintaining an encrypted video memory subsystem
US7202875B2 (en) * 2005-04-22 2007-04-10 Microsoft Corporation Palette-based, multi-tint, named color methods and systems

Also Published As

Publication number Publication date
TW200401234A (en) 2004-01-16
JP2004062885A (ja) 2004-02-26
US20120166816A1 (en) 2012-06-28
CN100350395C (zh) 2007-11-21
US8155314B2 (en) 2012-04-10
MY140378A (en) 2009-12-31
CA2427367A1 (en) 2003-12-24
NO20032888L (no) 2003-12-29
EP1378809A3 (en) 2005-01-12
US20030235303A1 (en) 2003-12-25
BR0301721A (pt) 2004-08-24
NO20032888D0 (no) 2003-06-23
ZA200303552B (en) 2003-11-10
AU2003204378B2 (en) 2009-05-07
PL360330A1 (en) 2003-12-29
AU2003204378A1 (en) 2004-01-15
RU2327215C2 (ru) 2008-06-20
CN1470998A (zh) 2004-01-28
EP1378809A2 (en) 2004-01-07
US8738929B2 (en) 2014-05-27

Similar Documents

Publication Publication Date Title
US7206940B2 (en) Methods and systems providing per pixel security and functionality
US8738929B2 (en) Auxiliary functionality for pixel data
US7293178B2 (en) Methods and systems for maintaining an encrypted video memory subsystem
US7337328B2 (en) Secure video card methods and systems
KR101030354B1 (ko) 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체
CA2434328C (en) Methods and systems for cryptographically protecting secure content
JP2003501915A (ja) 文書にデジタル署名するためのシステム
CN113344764B (zh) 安全图形处理器、处理器芯片、显示卡、装置、方法及存储介质
KR20040000348A (ko) 비디오 카드 출력을 보호하기 위한 시스템 및 방법
JP2005504365A (ja) 安全なデータの入出力を維持する方法及びシステム

Legal Events

Date Code Title Description
FG Grant or registration