BRPI0205818B1 - Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança - Google Patents

Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança Download PDF

Info

Publication number
BRPI0205818B1
BRPI0205818B1 BRPI0205818-9A BR0205818A BRPI0205818B1 BR PI0205818 B1 BRPI0205818 B1 BR PI0205818B1 BR 0205818 A BR0205818 A BR 0205818A BR PI0205818 B1 BRPI0205818 B1 BR PI0205818B1
Authority
BR
Brazil
Prior art keywords
encrypted
content
gpu
computing device
decrypting
Prior art date
Application number
BRPI0205818-9A
Other languages
English (en)
Other versions
BR0205818A (pt
Inventor
Paul England
Marcus Peinado
Nicholas P Wilt
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
Priority claimed from US10/125,170 external-priority patent/US7380130B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority claimed from PCT/US2002/038827 external-priority patent/WO2003048939A1/en
Publication of BR0205818A publication Critical patent/BR0205818A/pt
Publication of BRPI0205818B1 publication Critical patent/BRPI0205818B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

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

Description

"MÉTODO, MEIO E DISPOSITIVO PARA CRIPTOGRAFICAMENTE PROTEGER CONTEÚDO DE SEGURANÇA" REFERÊNCIA RECÍPROCA AOS PEDIDOS DE PATENTE RELACIONADOS
Este pedido de patente reivindica o beneficio dos pedidos de patente provisórios números de série 60/337.617 depositado em 4 de dezembro de 2001 e 60/339.143 depositado em 10 de dezembro de 2001 e está relacionado ao Pedido de Patente U.S. copendente de designação comum n.° 10/125.170 depositado em 18 de abril de 2002. AVISO DOS DIREITOS AUTORAIS E PERMISSÃO: Uma parte da divulgação deste documento de patente pode conter material gue é submetido à proteção dos direitos autorais. O proprietário dos direitos autorais não tem nenhuma objeção à reprodução de fac-simile por gualguer pessoa do documento de patente ou divulgação da patente, visto gue aparece nos arguivos ou registros de patentes Patent and Trademark Office, mas do contrário reserva todos e guaisguer direitos autorais. O aviso a seguir deve aplicar-se a este documento: Copyright © 2001, Microsoft Corp.
CAMPO DA INVENÇÃO A presente invenção diz respeito aos métodos e sistemas para criptograficamente proteger conteúdo de segurança. Mais particularmente, a presente invenção diz respeito às técnicas para criptograficamente proteger o conteúdo de segurança enviado por canal confidencial de gráficos, fornecendo tanto confiabilidade guanto proteção à falsificação com respeito ao conteúdo. FUNDAMENTO DA INVENÇÃO: A Internet e muitas outras fontes e aplicações a-gora fornecem uma vasta disposição de meios de fluxo e fixos ou outro conteúdo para ouvir, ver, processar, armazenar e, do contrário, transmitir. No entanto, atualmente não há uma forma prática de capturar, gravar ou transmitir os meios ou conteúdo de fluxo ou fixo de uma maneira protegida contra cópia de modo que um pirata não pode interceptar o fluxo em algum ponto ao longo do canal confidencial, ou à medida que o conteúdo está sendo processado ou enquanto o conteúdo está sendo transmitido, e toma posse de uma cópia ou altera o conteúdo. Este problema existiu com relação aos dispositivos de transmissão ou gravação de meios no passado, por exemplo, VCRs para conteúdo de televisão, ou gravadores de fita para sinais de áudio, mas com pelo menos uma diferença fundamental. Uma vez o conteúdo dos meios digitais podem ser gravados, virtualmente, sem nenhuma perda de sinal, isto expõe um "risco" para os proprietários dos direitos autorais que seus trabalhos serão livremente compartilhados (pirateados) sem compensação. Com VCRs e gravadores de fita, o(s) dispositivo (s) e meios de transmissão atraem ruído ou corrupção dos dados dentro do processo de gravação. Com meios digitais de fluxo ou fixos, não há nenhuma razão porque conversões e retransmissões virtualmente com menos perda não podem ser afetadas, pelo menos nos limites das capacidades do ouvido ou olho humano, e não há nenhuma razão porque os dados digitais não adulterados não podem ser armazenados e livremente distribuídos. Assim, pode ser desejável impedir redistribuição não restringida de dados digitais porque existe pouca diferença entre o que os proprietários de direitos autorais podem fornecer por uma remuneração e o que um pirata pode fornecer de grátis. Além do mais, com respeito às comunicações que são desejados ser confidenciais, tais como transações e-commerce, é importante para o usuário manter-se no diálogo de modo que nenhum terceiro possa estar a par das transações. Assim, com respeito ao conteúdo de uma fonte confiável, atualmente não há nenhuma forma prática para os dados ser 11 seguramente" processados ou transmitidos em um computador do usuário sem evitar pirataria, ou corrupção.
Em particular, uma vez o conteúdo é transmitido em canal confidencial entre um sistema de computação hospedeiro, uma ou mais unidades de processamento de gráficos (GPUs), e um dispositivo de apresentação, por exemplo, um monitor, existem várias oportunidades para um pirata ou outra terceira parte não autorizada acampar em uma linha ou sinal, e piratear ou corromper o sinal. Além do mais, à medida que os diálogos do usuário tornam-se mais sofisticados através dos serviços de envio de mensagens e teleconferência de vídeo, fornecendo um canal confidente para conteúdo de segurança de onde quer que originou torna-se o mais importante avanço.
Além do mais, é óbvio que gerações futuras de sistemas de operação, dispositivos de computação e aplicações utilizarão mais força computacional das GPUs para aplicações de comércio, ao contrário de extrair grande parte da força computacional das CPUs como nos computadores pessoais (PCs) de hoje. Desse modo, garantindo que o conteúdo que é enviado para as GPUs através de aplicações de "gráficos confiáveis" será uma característica fundamental para os dispositivos de computação do futuro, e não adequadamente direcionado pelos presentes sistemas de computação.
Este problema de fornecer um canal confidente para conteúdo confiável pode ser considerado como sendo duplo: (1) deve-se garantir que o conteúdo confiável não pode ser copiado ou inspecionado em algum ponto fraco durante o canal confidente (confiabilidade) e (2) deve-se assegurar que o canal confidente evita corrupção não autorizada de dados no canal confidente (protegido). No contexto de segurança de sistema, complexidade é um risco porque torna-se mais difícil comprovar uma segurança de sistema. Quanto um aeroporto ou outro cenário de segurança, quanto mais pontos de entrada e saída existem no sistema, mais difícil torna-se garantir segurança. Com este respeito, atualmente não há nenhum meio pelo qual o volume de funcionalidade da GPU e o(s) aciona-dor(es) de apresentação podem ser confiáveis em termos de tanto confiabilidade quanto capacidade de proteção. Assim, pode ser desejável implementar um ambiente de gráficos confiável com relação a um dispositivo de computação que recebe conteúdo de uma fonte confiável, de modo que um usuário do dispositivo possa ser assegurado que o conteúdo não pode ser copiado sem autorização e não pode ser falsificado ou alterado por uma terceira parte.
SUMÁRIO DA INVENÇÃO
Em vista do anterior, a presente invenção fornece métodos e sistemas para criptograficamente proteger conteúdo de segurança com relação a um subsistema de gráficos de um dispositivo de computação. As técnicas são implementadas para criptografar os conteúdos de memória de vídeo de modo que software não autorizado não pode ganhar acesso significativo a ele, assim satisfazendo o objetivo de confidência. Além disso, um mecanismo para detecção de falsificação é fornecido de modo que há uma ciência quando os dados tiverem sido alterados de alguma forma, assim satisfazendo o objetivo de proteção. Em várias modalidades, a invenção descreve como criptografar os conteúdos de superfícies de sobreposição e/ou armazenamento temporários de comando, e/ou descreve como permitir a GPU operar em conteúdo criptografado ao mesmo tempo impedindo sua disponibilidade a terceiros, dispositivos ou software não confiáveis.
Os métodos da invenção diferentemente incluem técnicas para criptograficamente proteger conteúdo de segurança com relação a um sistema de gráficos confiável tendo memória de vídeo, unidade(s) de processamento de gráficos (GPU(s)) e um dispositivo de processamento criptográfico comunicativa-mente acoplado à(s) GPU(s), compreendendo solicitar, por uma aplicação ou dispositivo, o sistema de gráficos para executar o processamento ou transmissão do conteúdo de segurança, em que o requisito inclui transmitir pela aplicação ou dispositivo uma chave da sessão para o sistema de gráficos e transmitir o conteúdo de segurança para a(s) parte(s) crip- tografada(s) da memória de vídeo que decifra o conteúdo da(s) parte(s) criptografada(s) da memória de vídeo pela(s) GPU(s) em comunicação com o dispositivo de processamento criptográfico, executando o processamento ou transmissão do conteúdo decriptografado pela(s) GPU(s) e dando saída do conteúdo da(s) GPU(s). Métodos similares da invenção diferentemente incluem solicitar, por uma aplicação ou dispositivo, o sistema de gráficos para executar o processamento ou transmissão do conteúdo de segurança, em que o requisito inclui transmitir pela aplicação ou dispositivo uma chave da sessão para o sistema de gráficos para verificação pelo dispositivo de processamento criptográfico e transmitir o conteúdo de segurança para a(s) parte(s) criptografada(s) da memória de vídeo decifrando o conteúdo da(s) parte(s) criptografada(s) da memória de vídeo por um mecanismo de decriptografia de uma unidade de entrada da(s) GPU(s), em que o mecanismo de de-criptografia está em comunicação com o dispositivo de processamento criptográfico, executando o processamento ou transmissão do conteúdo decriptografado pela(s) GPU(s), en-criptando o conteúdo com um mecanismo de criptografi-a/decriptografia de uma unidade de saída da(s) GPU(s) e dando saída do conteúdo decriptografado da(s) GPU(s).
Outras características e modalidades da presente invenção estão descritas abaixo. BREVE DESCRIÇÃO DOS DESENHOS: Os métodos e sistemas para criptograficamente proteger conteúdo de segurança de acordo com a presente inven- ção são também descritos com referência aos desenhos em anexo em que: A Figura IA é um diagrama de bloco que representa um ambiente de rede exemplar tendo uma variedade de dispositivos de computação em que a presente invenção pode ser implementada; A Figura lb é um diagrama de bloco que representa um dispositivo de computação não limitativo exemplar em que a presente invenção pode ser implementada; A Figura 2 é um diagrama de fluxo que ilustra partes não protegidas de um canal confidente de gráficos que são protegidas de acordo com a invenção;
As Figuras 3A e 3B são diagramas de bloco que i-lustram aspectos exemplares de uma primeira camada de segurança de acordo com a invenção;
As Figuras 4A a 4C são diagramas de bloco que i-lustram aspectos exemplares de uma segunda camada de segurança de acordo com a invenção;
As Figuras 5A a 5B ilustram arranjo exemplar de um formato AYUV/ARGB de acordo com a invenção;
As Figuras 6A a 6B ilustram arranjo exemplar de um formato YUY2 de acordo com a invenção;
As Figuras 7A a 7B ilustram arranjo exemplar de um formato plano compactado de acordo com a invenção;
As Figuras 8A e 8B são diagramas de bloco que i-lustram aspectos exemplares de uma terceira camada de segurança de acordo com a invenção; e As Figuras 9A e 9B são diagramas de bloco que i-lustram técnicas de criptografia exemplares que podem ser aplicadas para a saída de uma unidade de processamento de gráficos de acordo com a invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
VISÃO GERAL
Esta presente invenção fornece sistema e técnicas para ampliar um sistema de operação, ou outro intermediário entre o conteúdo de uma fonte confiável e um sistema de gráficos para processar e/ou transmitir o conteúdo para permitir aplicações de "gráficos confiáveis", tais como resistente à falsificação, diálogos confidenciais e o reprodução de conteúdo prêmio que é resistente à duplicação não autorizada. Uma forma de visualizar a invenção é que ela fornece três 'níveis' de segurança: (1) criptografia dos conteúdos de superfícies de sobreposição (2) permitir a GPU, ou outro dispositivo de co-processamento, operar no conteúdo criptografado sem torná-lo disponível a partes não confiáveis e (3) permitir armazenamento temporários de comando ser criptografados .
Como mencionado, no contexto de segurança de sistema, a complexidade é um risco porque ela torna difícil comprovar uma segurança de sistema. Como um resultado, a invenção inicia considerando que o volume de funcionalidade de GPU e o(s) acionador(es) de exibição devem ser considerados não confiáveis. A invenção então aplica as técnicas que aumentam as chances de uma implementação correta em termos de confiabilidade e capacidade de proteção limitando o escopo do hardware que pode ser implementado para satisfazer os critérios de segurança.
Alguma terminologia de acordo com a invenção já foi debatida acima. Porém, para clareza, alguns termos serão agora enfatizados. O termo confidencial refere-se ao impedimento de uma terceira parte não confiável, tal como um dispositivo ou software da terceira parte, de obter acesso à informação de conteúdo confiável. Um exemplo de tal confiabilidade inclui prevenir uma terceira parte não confiável de obter acesso à reprodução do conteúdo de vídeo prêmio criptografado onde quer que seja ao longo do canal confidente de gráficos. O termo protegido refere-se à prevenção de uma terceira parte não confiável, tal como um dispositivo ou software da terceira parte, de obter acesso ou alterar a informação de conteúdo confiável sem ser detectado. Um exemplo de tal capacidade de proteção inclui impedir uma terceira parte não confiável de obter acesso ou alterar o display de um diálogo segura que deve ocorrer durante uma transação de e-commerce.
Com este respeito, a invenção considera janelas de sobreposição, por exemplo, uma interface do usuário no topo de um fluxo de vídeo de conteúdo prêmio, bem como janelas não inobscurecíveis, que deve estar presentes durante um diálogo de e-commerce.
AMBIENTES DE REDE EXEMPLARES
Alguém de habilidade na técnica pode apreciar que um computador ou outro cliente ou dispositivo servidor pode ser disposto como parte de uma rede de computadores, ou em um ambiente de computação distribuída. Com esta consideração, a presente invenção diz respeito a um sistema de computador tendo qualquer número de unidades de memória ou armazenamento, e qualquer número de aplicações e processos ocorrendo ao longo de qualquer número de unidades ou volumes de armazenamento, que pode implicar o regime de gráficos confiável da invenção. A presente invenção pode aplicar-se a um ambiente com computadores servidores e computadores clientes dispostos em um ambiente de rede ou ambientes de computação distribuída, tendo armazenamento remoto ou local. A presente invenção pode também ser aplicada a dispositivos de computação isolados, tendo funcionalidade de linguagem de programação, interpretação e execução de capacidades para gerar, receber e transmitir informação em conexão com serviços remotos ou locais.
Computação distribuída facilita o compartilhamento de recursos e serviços do computador pela troca direta entre os dispositivos e sistemas de computação. Estes recursos e serviços incluem a troca de informação, armazenamento de cache e armazenamento de discos para arquivos. Computação distribuída leva vantagem de conectividade em rede, permitindo os clientes alavancar sua força coletiva para beneficiar toda a empresa. Com este respeito, uma variedade de dispositivos pode ter aplicações, objetos ou recursos que podem interagir para implicar canal(is) de gráficos confiável(eis) da presente invenção. A Fig. IA fornece um diagrama esquemático de um ambiente em rede ou de computação distribuída. 0 ambiente de computação distribuída compreende objetos de computação 10a, 10b, etc. e objetos ou dispositivos de computação 110a, 110b, 110c, etc. Estes objetos podem compreender programas, métodos, armazenamentos de dados, lógica programável, etc. Os objetos podem compreender partes do mesmo dispositivo ou diferentes tais como PDAs, televisões, reprodutor de MP3, televisões, computadores pessoais, etc. Cada objeto pode comunicar com o outro objeto na forma da rede de comunicações 14. Esta rede pode em si compreender outros objetos de computação e dispositivos de computação que fornecem serviços ao sistema da Fig. IA. De acordo com um aspecto da invenção, cada objeto 10 ou 110 pode conter uma aplicação que deve solicitar recursos de gráficos confiáveis.
Pode também ser apreciado que um objeto, tal como 110c, pode ser hospedado em outro dispositivo de computação 10 ou 110. Assim, embora o ambiente físico descrito possa apresentar os dispositivos conectados como computadores, tal ilustração é meramente exemplar e o ambiente físico pode alternativamente ser representado ou descrito compreendendo vários dispositivos digitais tais como PDAs, televisões, reprodutor de MP3, etc. objetos de software tais como interfaces, objetos de COM e outros. Há uma variedade de sistemas, componentes e configurações de rede que suportam ambientes de computação distribuída. Por exemplo, os sistemas de computações podem ser conectados um ao outro por sistema de fio ou sem fio, por redes locais ou redes amplamente distribuídas. Atualmente, muitas das redes são acopladas à Internet, as quais fornecem a infraestrutura para computação amplamente distribuída e abrange muitas diferentes redes.
Em ambientes de rede doméstica, existem pelo menos quatro meios de transporte de rede diversos que podem cada um suportar um protocolo único como linha de Força, dados (ambos com e sem fio), voz (por exemplo, telefone) e meios de entretenimento. A maioria dos dispositivos de controle domésticos como interruptores de luz e aplicações e utensílios podem usar linha de força para conectividade. Os Serviços de Dados podem entrar no lar como banda larga (por exemplo, ou DSL ou Cable modem) e são acessíveis dentro de casa usando ou conectividade sem fio (por exemplo, HomeRF ou 802.11b) ou com fio (HomerPNA, Cat 5, até mesmo linha de força elétrica). 0 tráfico de voz pode entrar em cada ou como com fio (por exemplo, Cat 3) ou sem fio (por exemplo, telefones celulares( e pode ser distribuído dentro de cada u-sando instalação elétrica de Cat 3. Os meios de entretenimento podem entrar em casa ou através de satélite ou cabo e é tipicamente distribuído na casa usando cabo coaxial. IEEE 1394 e DVI também estão emergindo como interconectores digitais para grupos de dispositivos de meios. Todos destes ambientes de rede e outros que pode emergir como padrões de protocolo podem ser interconectados para formar uma intranet que pode ser conectada ao mundo exterior na forma da Internet. Em resumo, uma variedade de fontes distinta existe para o armazenamento e transmissão de dados, e consequentemente, avançando, dispositivos de computação requererão formas de conteúdo de proteção em todas as partes do canal seguro de processamento de dados. A Internet comumente refere-se à coleção de redes e gateways que utilizam o conjunto de protocolos TCP/IP, que são bem conhecidos na técnica de formação de rede de computador. TCP/IP é um acrônimo para "Protocolo de Controle de Transmissão/Programa de Interface". A Internet pode ser descrita como um sistema de redes de computadores remotos geograficamente distribuídos interconectadas por computadores executando protocolos de rede que permitem aos usuários interagir e compartilhar informação por meio das redes. Por causa de tal compartilhamento de informação bem difundida, redes remotas tais como a Internet têm assim geralmente desenvolvido muito adentro um sistema aberto para cujos criadores podem elaborar aplicações de software para executar operações ou serviços especializados, essencialmente sem restrição.
Desse modo, a inf raestrutura de rede permite um hospedeiro de topologias de rede tais como arquiteturas cli-ente/servidor, não hierarquizadas ou híbridas. 0 "cliente" é um membro de uma classe ou grupo que usa os serviços de outra classe ou grupo ao qual ele não está relacionado. Assim, na computação, um cliente é um processo, isto é, aproximadamente uma série de instruções ou tarefas, que requer um serviço fornecido por outro programa. 0 processo do cliente u-tiliza o serviço requerido sem ter que "saber" quaisquer detalhes de funcionamento sobre o outro programa ou o serviço em si. Em uma arquitetura de cliente/servidor, particular- mente um sistema em rede, um cliente é usualmente um computador que acessa recursos em rede compartilhada por outro computador, por exemplo, um servidor. No exemplo da Fig. IA, os computadores 110a, 110b, etc. podem ser considerados como clientes e os computadores 10a , 10b, etc, podem ser considerados como o servidor onde o servidor 10a, 10b, etc. mantém os dados que são depois replicados nos computadores dos clientes 110a, 110b, etc.
Um servidor é tipicamente um sistema de computador remoto acessível em uma rede remota tal como a Internet. O processo do cliente pode ser ativado em um primeiro sistema de computador, e o processo do servidor pode ser ativado em um segundo sistema de computador, comunicando um com o outro em um meio de comunicações, assim fornecendo funcionalidade distribuída e permitindo clientes múltiplos levar vantagem das capacidades de colher informação do servidor. 0 cliente e o servidor comunicam um com o outro utilizando a funcionalidade fornecida por uma camada de protocolo. Por exemplo, Protocolo de Transferência de Hipertexto (HTTP) é um protocolo comum que é usado em conjunção com World Wild Web (WWW) . Tipicamente, um endereço da rede de computadores como um Localizador Universal de Recursos (URL) ou um endereço de Protocolo da Internet (IP) é usado para identificar os computadores do servidor ou cliente um com o outro. 0 endereço da rede pode ser referido como um endereço de Localizador Universal de Recursos. Por exemplo, a comunicação pode ser fornecida em um meio de comunicações. Em particular, o cliente e o servidor podem ser acoplados um ao outro através de conexões de TCP/IP para comunicação de alta capacidade.
Assim, a Fig. IA ilustra um ambiente de rede ou distribuído exemplar, com um servidor em comunicação com computadores do cliente através de uma rede/barramento, em que a presente invenção pode ser empregada. Em mais detalhes, vários servidores 10a, 10b, etc, estão interconectados através de uma rede/barramento de comunicações 14, que pode ser uma LAN, WAN, intranet, a Internet, etc., com vários dispositivos remotos do cliente ou de computação 110a, 110b, 110c, HOd, HOe, etc, tal como um computador portátil, computador de bolso, cliente fraco, instrumento em rede, ou outro dispositivo, tal como um VCR, TV, forno, luz, aquecedor e outros de acordo com a presente invenção. É assim contemplado que a presente invenção pode aplicar-se a qualquer dispositivo de computação com relação a isto é desejável processar, armazenar ou transmitir conteúdo de segurança de uma fonte confiável.
Em um ambiente de rede em que a rede/barramento de comunicações 14 é a Internet, por exemplo, os servidores 10 podem ser servidores da rede com o quais os clientes 110a, 110b, 110c, HOd, HOe, etc. comunicam através de qualquer um de uma variedade de protocolos conhecidos como HTTP. Os servidores 10 podem também servir como clientes 110, como podem ser características de um ambiente de computação distribuída. As comunicações podem ser com ou sem fio, onde a-propriado. Os dispositivos do cliente 110 podem ou não comunicar através de rede/barramento de comunicações 14, e podem ter comunicações independentes a eles associadas. Por exemplo, no caso de uma TV ou VCR, onde pode ou não ser um aspecto de rede para o controle deste. Cada computador cliente 110 e computador servidor 10 podem ser equipados com vários módulos ou objetos de programa de aplicação 135 e com conexões ou acesso a vários tipos de elementos ou objetos de armazenamento, por meio destes arquivos podem ser armazenados em cuja(s) parte(s) podem ser baixados ou migrados. Assim, a presente invenção pode também ser utilizada em um ambiente de rede de computadores tendo computadores clientes 110a, 110b, etc que podem acessar e interagir com uma re-de/barramento de computadores 14 e computadores servidores 10a, 10b, etc. que podem interagir com computadores clientes 110a, 110b, etc, e outros dispositivos 111 e bancos de dados 20.
DISPOSITIVO DE COMPUTAÇÃO EXEMPLAR A Fig. 1B e o debate a seguir são intencionados a fornecer uma descrição geral breve de uma ambiente de computação adequado em que a invenção pode ser implementada. Deve ser entendido, porém, que dispositivos de bolso, portáteis e outros de computação e objetos de computação de todos os tipos são contemplados para o uso com relação à presente invenção. Embora um computador de propósito geral seja descrito abaixo, este é um exemplo, e a presente invenção pode ser implementada com um cliente fraco tendo interoperatividade e interação de rede/barramento. Assim, a presente invenção pode ser implementada em um ambiente de serviços hospedados em rede em que muito pouco ou recursos de cliente mínimos estão implicados, por exemplo, um ambiente em rede em que o dispositivo cliente serve meramente como uma interface para a re-de/barramento, tal como um objeto colocado em um instrumento. Em essência, em qualquer lugar que aqueles dados podem ser armazenados ou a partir daqueles dados podem ser buscados ou transmitidos é um ambiente desejável, ou adequado, para a operação da proteção criptográfica do conteúdo de segurança da invenção.
Embora não requerido, a invenção pode ser implementada através de um sistema de operação, interface de programação de aplicação (API) e/ou incluída dentro de software de aplicação que realiza interfaces com o conteúdo confiável. Em várias modalidades, a invenção também se aplica ao hardware que se conforma à realização de interface, e técnicas de criptografia abaixo descritas. Software pode ser descrito no contexto geral de instruções executáveis por computador, tais como módulos de programa, sendo executado por um ou mais computadores, tais como estações de trabalho de cliente, servidores ou outros dispositivos. Em geral, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e outros e que executam tarefas particulares ou implementam tipos de dados abstratos particulares. Tipicamente, a funcionalidade dos módulos de programa pode ser combinada ou distribuída como desejado em várias modalidades. Além do mais, aqueles de habilidade na técnica apreciarão que a invenção pode ser praticada com outras configurações do sistema de computador. Outros sistemas de computação bem conhecidos, ambientes e/ou configurações que podem ser adequados para o uso com a invenção incluem, mas não são limitados a computadores pessoais (PCs), máquinas de caixa de banco automatizadas, computadores servidores, dispositivos portáteis ou laptop, sistemas de processadores múltiplos, sistemas com base em microprocessador, eletrônicos programáveis pelo consumidor, PCs de rede, instrumentos, luzes, elementos de controle de ambientes, minicom-putadores, computadores principais e outros. A invenção pode também ser praticada em ambientes de computação distribuída onde as tarefas são executadas por dispositivos de processamento remotos que são ligados através de uma rede/barramento de comunicações ou outro meio de transmissão de dados. Em um ambiente de computação distribuída, os módulos de programa podem estar localizados em ambos meios de armazenamento de computador locais ou remotos incluindo dispositivos de armazenamento de memória, e nodos de cliente podem por sua vez comportar-se como nodos de servidor. A Fig. 1B, assim, ilustra um exemplo de um ambiente de sistema de computação adequado 100 em que a invenção pode ser implementada, embora como tornado claro acima, o ambiente de sistema de computação 100 é apenas um exemplo de um ambiente de computação adequado e não é intencionado sugerir qualquer limitação ao escopo de uso ou funcionalidade da invenção. Nem deve o ambiente de computação 100 ser interpretado como tendo qualquer dependência ou requerimento relacionado a qualquer um ou combinação de componentes ilustrados no ambiente de operação exemplar 100.
Com referência à Fig. 1B, um sistema exemplar para implementar a invenção inclui um dispositivo de computação de propósito geral na forma de um computador 110. Os componentes do computador 110 podem incluir, mas não são limitados a, uma unidade de processamento 120, uma memória do sistema 13 0 e um barramento do sistema 121 que acopla vários componentes do sistema incluindo a memória do sistema à unidade de processamento 120. O barramento do sistema 121 pode ser qualquer um dos vários tipos de estruturas de barramento incluindo barramento de memória ou controlador de memória, um barramento periférico e um barramento local usando qualquer uma de uma variedade de arquiteturas de barramento. Na forma de exemplo, e não limitação, tais estruturas inclui barramento de Arquitetura Industrial Padrão (ISA), barramento de Arquitetura de Micro Canal (MCA), barramento de ISA Intensificada (EISA), barramento local de Associação de Padrões de Eletrônicos de Vídeo (VESA) e barramento de Inteco-nector de Componente Periférico (PCI) (também conhecido como barramento de Mezanino). O computador 110 tipicamente inclui uma variedade de meios legíveis por computador. Os meios legíveis por computador podem ser quaisquer meios disponíveis que podem ser acessados pelo computador 110 e inclui tanto meios voláteis quanto não voláteis, meios removíveis quanto não removíveis, na forma de exemplo, e não limitação, os meios legíveis por computador podem compreender meios de armazenamento de computador e meios de comunicação. Os meios de armazenamento de computador incluem tanto meios voláteis quanto não voláteis, removíveis quanto não removíveis implementados em qualquer método ou tecnologia para armazenagem de informação tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. Os meios de armazenagem de computador incluem, mas não são limitados a RAM, ROM, EEPROM, memória rápida ou outra tecnologia de memória, CDROM, discos versáveis digitais (DVD) ou outro armazenamento em disco óptico, cassetes magnéticos, fita magnética, armazenagem em disco magnético ou outros dispositivos magnéticos de armazenagem, ou outro meio que pode ser usado para armazenar a informação desejada e que pode ser acessado pelo computador 110. Os meios de comunicação tipicamente incorporam instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulados tal como uma onda portadora ou outro mecanismo de transporte e inclui quaisquer meios de liberação de informação. O termo "sinal de dados modulados" significa um sinal que tem um ou mais de suas características determinadas ou alteradas de uma tal forma para codificar a informação no sinal. Na forma de exemplo, e não limitação, os meios de comunicação incluem meios com fio tais como rede com fio ou conexão com fio direta, e meios sem fio tais como acústico, RF, infravermelho ou outros meios sem fio. As combinações de qualquer um dos acima devem ser também incluídas dentro do escopo de meios legíveis por computador. A memória do sistema 130 inclui meios de armazenamento de computador na forma de memória volátil e/ou não volátil tal como memória apenas de leitura (ROM) 131 e memória de acesso aleatório (RAM) 132. Um sistema de entrada/saída básico 133 (BIOS), contendo as rotinas básicas que ajudam a transferir informação entre os elementos dentro do computador 110, tais como durante inicialização, é tipicamente armazenado em ROM 131. RAM 132 tipicamente contém módulos de dados e/ou programa que são imediatamente acessíveis e/ou presentemente sendo operados por uma unidade de processamento 12 0. Na forma de exemplo, e não limitação, a Fig. 1B i-lustra o sistema de operação 134, programas de aplicação 135, outros módulos de programa 136 e dados de programa 137. O computador 110 pode também incluir outros meios de armazenamento de computador removíveis/não removíveis, voláteis/não voláteis. Na forma de exemplo, a Fig. 1B ilustra um acionador de disco rígido 141 que lê ou escreve para os meios magnéticos não removíveis, não voláteis, um acionador de disco magnético 151 que lê ou escreve para um disco magnético removível, não volátil, e um acionador de disco óptico 155 que lê ou escreve para um disco óptico removível, não volátil 156, tal como um CD ROM ou outro meio óptico, outros meios de armazenamento de computador removíveis/não removíveis, voláteis/não voláteis que podem ser usados no ambiente de operação exemplar incluem, mas não são limitados a cassetes de fita magnética, cartões de memória rápida, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido e outros. O acionador de disco rígido 141 é tipicamente conectado ao barramento do sistema 121 através de uma interface de memória não removível tal como interface 140, e o acionador de disco magnético 151 e o acionador de disco óptico 155 são tipicamente conectados ao barramento do sistema 121 por uma interface de memória removível, tal como interface 150.
Os acionadores e seus meios de armazenamento de computador associados acima debatidos e ilustrados na Fig. 1B fornecem armazenamento de instruções legíveis de computador, estruturas de dados, módulos de programa e outros dados para o computador 110. Na Fig. 1B, por exemplo, o acionador de disco rígido 141 é ilustrado como sistema de operação de armazenamento 144, programas de aplicação 145, outros módulos de programa 146 e dados de programa 147. Observe que estes componentes ou podem ser os mesmos ou diferentes do sistema de operação 134, programas de aplicação 135, outros módulos de programa 136 e dados de programa 137. 0 sistema de operação 144, programas de aplicação 145, outros módulos de programa 146 e dados de programa 147 são dados diferentes números aqui para ilustrar que, em um mínimo, eles são copias diferentes. Um usuário pode entrar comandos e informação dentro do computador 110 através dos dispositivos de entrada tal como um teclado 162 e dispositivo de apontamento 161, comu-mente referido como um mouse, bola de rota seguida ou suporte de toque. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, manete, suporte de jogos, disco satélite, scanner ou outros. Estes e outros dispositivos de entrada são freqüentemente conectados à unidade de processamento 120 através de uma interface de entrada do usuário 160 que é acoplada ao barramento do sistema 121, mas pode ser conectado por outras estruturas de interface e barramento, tal como uma porta paralela, porta de jogo ou um barramento serial universal (USB). Uma interface de gráficos 182, como Northbridge, pode também ser conectada ao barramento do sistema 121. Northbridge é um grupo de chips que comunica com a CPU, ou unidade de processamento hospedeira 120, e assume responsabilidade para comunicações de porta de gráficos aceleradas (AGP). Uma ou mais unidades de processamento de gráficos (GPUs) 184 podem comunicar com a interface de gráficos 182. Com este respeito, GPUs 184 em geral incluem armazenamento de memória on-chip, tal como armazenamento de registro e GPUs 184 comunicam com uma memória de vídeo 186. GPUs 184, porém, são um exemplo de um co-processador e assim uma variedade de dispositivos de co-processamento podem ser incluídos no computador 110.Um monitor 191 ou outro tipo de dispositivo de exibição está também conectado ao barramento do sistema 121 através de uma interface, tal como uma interface de vídeo 190, que pode por sua vez comunica com a memória de vídeo 186. Em geral, é esta parte de um dispositivo de computação que é vulnerável, e conseqüentemente a presente invenção fornece proteção e confiabilidade dos dados sendo processados ou transmitidos incidente a este. Além do monitor 191, os computadores podem também incluir outros dispositivos periféricos de saída como auto-falantes 197 e impressora 196, que podem ser conectados através de uma interface periférica de saída 195. 0 computador 110 pode operar em um ambiente em rede ou distribuído usando conexões lógicas a um ou mais computadores remotos, tal como um computador remoto 180. 0 com- putador remoto 180 pode ser um computador pessoal, um servidor, um encaminhador, um PC de rede, um dispositivo de equiparação ou outros nodos de rede comum, e tipicamente inclui muitos ou todos dos elementos acima descritos relativos ao computador 110, embora apenas um dispositivo de armazenamento de memória 181 tenha sido ilustrado na Fig. 1B. As conexões lógicas descritas na Fig. 1B incluem uma rede de área local (LAN) 171 e uma rede de área vasta (WAN) 173, mas pode também incluir outras redes/barramentos. Tais ambientes de formação de rede são comuns em casas, escritórios, redes de computadores de âmbito empresarial, intranets e a Internet.
Quando usado em um ambiente de rede LAN, o computador 110 é conectado à LAN 171 através de uma interface de rede ou adaptador 170. Quando usado em um ambiente de rede WAN, o computador 110 tipicamente inclui um modem 172 ou outros meios para estabelecer comunicações pela WAN 173, tal como a Internet. O modem 172, que pode ser interno ou externo, pode ser conectado ao barramento do sistema 121 através da interface de entrada do usuário 160, ou outro mecanismo apropriado. Em um ambiente em rede, os módulos de programa descritos relativo ao computador 110, ou partes destes, podem ser armazenados no dispositivo de armazenamento de memória remoto. Na forma de exemplo, e não limitação, a Fig. 1B ilustra os programas de aplicação remotos 185 que residem no dispositivo de memória 181. Será apreciado que as conexões de rede mostradas são exemplares e outros meios de estabelecer ligações de comunicações entre os computadores podem ser usados.
ESTRUTURAS OU ARQUITETURAS DE COMPUTAÇÃO DISTRIBUÍDA EXEMPLARES Várias estruturas de computação distribuída foram e têm sido desenvolvidas em consideração à convergência de computação pessoal e a Internet. Indivíduos e usuários comerciais semelhantes são fornecidos com uma interface inte-roperável ininterruptamente e habilitada para rede para a-plicações e dispositivos de computação, tornando as atividades de computação altamente de navegador da rede ou orientada para rede.
Por exemplo, a plataforma da MICROSOFT®1s.Net inclui servidores, serviços de bloco de construção, como armazenamento de dados com base na rede e software de dispositivo capazes de ser baixados. De forma geral falando, a plataforma .Net fornece (1) a capacidade de fazer a gama inteira de dispositivos de computação trabalharem juntos e ter informação do usuário automaticamente atualizada e sincronizada em todos eles, (2) capacidade interativa aumentada para sites da rede, permitido por uso maior de XML que HTML, (3) serviços on-line que caracterizam acesso personalizado e liberação de produtos e serviços ao usuário de um ponto de início central para o gerencialmente de várias aplicações, como e-mail, por exemplo, ou software, como Office .Net, (4) armazenamento de dados centralizado, que aumentará a eficácia e facilidade de acessar à informação, bem como sincronização de informação entre usuários e dispositivos, (5) a capacidade de integrar vários meios de comunicação, tal como e-mail, faxes e telefones, (6) para criadores, a capacidade de criar módulos reusáveis, assim aumentando a produtividade e reduzindo o número de erros de programação e (7) também muitas outras características de integração de plataformas cruzadas .
Embora as modalidades exemplares aqui são em geral descritas com relação aos métodos implementados por software residindo em um dispositivo de computação, uma ou mais partes da invenção podem ser também implementadas através de um sistema de operação, interface de programação de aplicação (API) ou um objeto "homem intermediário" entre um co-processador e um conteúdo inviolado, de modo que os serviços de conteúdo confiável possam ser executados, suportados ou acessados através de todas das linguagens e serviços da .NET's, e em outras estruturas de computação distribuída também. Além do mais, pode ser apreciado que uma ou mais técnicas descritas de acordo com a invenção podem implicar alterações no hardware, como alterações na GPU para adequa-dar às técnicas. CRIPTOGRAFICAMENTE PROTEGENDO CONTEÚDO DE SEGURAM- ÇA A presente invenção assim fornece métodos e sistemas para ampliar um sistema de operação, ou qualquer plataforma, para permitir aplicações de "gráficos confiáveis", como resistentes à falsificação, diálogos confidenciais e para permitir reprodução do conteúdo de uma forma resistente à duplicação não autorizada. O problema solucionado pela presente invenção é ilustrado pela Fig. 2 em que o conteúdo prêmio criptografado 200 está sendo mostrado passado ou ge- rado por uma aplicação de software confiável TS. Incidente ao uso do software confiável TS, o conteúdo 200 pode implicar a funcionalidade da GPU 265 antes da transmissão (o outro uso) do conteúdo 200 através de um dispositivo de transmissão 295. Tal teor 200 será passado da memória do sistema ou hospedeiro 230 para a memória de vídeo 260 para processamento pelo GPU 265. A linha pontilhada na Fig. 2 ilustra onde o problema de segurança encontra-se. Conforme relacionado no fundamento, nenhum sistema hoje em dia apropriadamente assegura liberação protegida e confidencial de conteúdo a-través dos elementos circundados pela linha pontilhada. Do ponto de vista do software confiável TS, o primeiro problema é se ou não os componentes dentro da linha pontilhada podem ser confiáveis com o conteúdo antes de manusear o conteúdo para a GPU. Assumindo que o software confiável TS pode autenticar os componentes dento da linha pontilhada adequadamente, o segundo problema do ponto de vista do software confiável TS é que o software confiável TS deve ser razoavelmente seguro que, uma vez os dados são manuseados dentro da linha pontilhada, os dados não serão alterados. A presente invenção se dirige a ambos tipos de problemas em várias modalidades abaixo descritas. Em várias formas, os métodos e sistemas são implementados (1) encriptando os conteúdos das superfícies de sobreposição (2) permitindo a GPU operar no conteúdo criptografado sem torná-lo disponível às aplicações ou partes não confiáveis ou e (3) encriptando o conteúdo de armazenamento temporários de comando.
Um primeiro aspecto ao problema de processamento e renderização de gráficos confiáveis direcionado pela invenção diz respeito ao fornecimento de um processador criptográfico (algumas vezes referido como 'cripto') e gerenciamento de chave indexada. 0 Pedido de Patente U. S. Copenden-te comumente designado n.° AAA/BBB.CCC (o pedido de patente 'CCC), depositado em DD de Mês, YYYY, intitulado "Methods and Systems for Autentication of Components im a Graphics System" ensina as técnicas para autenticar o(s) componente (s) com relação a um sistema de gráficos, como abaixo descrito. É para ser entendido, no entanto, que a invenção presume que a autenticação ocorreu e assim quaisquer técnicas de autenticação podem ser alavancadas para fornecer uma plataforma de gráficos confiável como descrito nas várias modalidades da invenção abaixo.
AUTENTICAÇÃO EXEMPLAR
Com este respeito, os cartões de gráficos seguros deves ser capazes de si autenticarem como tais. Em particular, o software confiável deve ser capaz de distinguir um placa gráfica seguro de um placa gráfica tradicional ou um dispositivo de invasão, como uma fraude. Além disso, o software confiável deve ser capaz de relevar chaves criptográficas ao placa gráfica e se capaz de verificar que o receptor das chaves é de fato um placa gráfica seguro. Para este propósito, os cartões de gráficos seguros são equipados com um processador cripto, de acordo com a invenção, que executa as tarefas criptográficas de autenticação e transportam as chaves .
Com respeito ap hardware, os processadores de cripto são fornecidos de acordo com a invenção, que são individualizados e certificados durante a fabricação. Cada criptoprocessador contém uma chave de descrição privativa única Kpriv. Embora muitos diferentes algoritmos de criptografia e decriptografia sejam contemplados de acordo com a invenção e conhecidos a aqueles nas técnicas criptográficas, para contexto, o algoritmo aqui descrito é RSA e a extensão da chave é 1024 bits, ambas escolhas de modelo não limitati-vas, que podem ser trabalhadas de acordo com o intercâmbio dependendo da aplicação e do(s) nível(eis) de segurança desejados .
Com este respeito, o criptoprocessador é permanentemente ligado ao placa gráfica, ou adicionando-o a um chip existente ou adicionando-o como um chip separado ao cartão. O criptoprocessador implementa um criptoalgoritmo de chave pública, conforme descrito em mais detalhes abaixo e oculta uma chave privativa única. Quanto a isto, um tal criptoprocessador pode executar uma decriptografia de chave pública rapidamente com as tecnologias de silício atuais. Porém, o criptoprocessador pode também incluir um acelerado de chave pública e pode implementar uma cifra simétrica (AES) e alguma lógica de controle.
Em uma modalidade não limitativa exemplar, o criptoprocessador inclui os registros voláteis a seguir: (1) um registro S de 256 bits para a chave da sessão. 0 tempo de vida desta chave é tipicamente o tempo de operação do software confiável e (2) um arranjo de uma pluralidade de chaves de indexação. Cada chave pode ser de 128 bits de extensão, embora outras escolhas possam ser adequadas., cada chave está associada com uma janela particular e é usada para o placa gráfica para decriptografar seu conteúdo. 0 tempo de vida de cada chave é governado pelas instruções do software confiável .
Como mencionado, o criptoprocessador da invenção está permanentemente ligado ao placa gráfica. Assim, é requerido um meio para seguramente realizar interface com o criptoprocessador para fazer uso de sua funcionalidade. Quanto à realização de interface com o processo de cripto, a presente invenção considera pelo menos duas técnicas: (a) uma interface externa para o software confiável TS e (b) uma interface para a GPU 265. Esta interface - pelo menos no seu aspecto criptográfico - deve ser padronizada. Aquela interface pode ser específica na implementação, mas deve aderir às normas gerais abaixo expostas.
Com respeito à implementação da interface externa, a interface externa usa um protocolo de criptografia de chave privativa (PK) para autenticação e transporta da chave. Sob este protocolo, o software confiável TS decifra uma chave de sessão com a chave pública do criptoprocessador. 0 criptoprocessador recebe o criptobolb resultante e o decifra com sua chave privativa, assim obtendo a chave de sessão. Agora, o software confiável e o criptoprocessador compartilham um sigilo. 0 software confiável pode suar esta chave de sessão para enviar as instruções para o criptoprocessador.
Em uma modalidade não limitativa, a interface externa é exposta através das funções a seguir pelo criptopro-cessador: A função SetSessionKey() executa a etapa de autenticação inicial e o transporte de chave. Ela é a única função que acessa a funcionalidade da chave pública do cripto-processador. Assim, em uma modalidade, a presente invenção contempla chamar esta função uma vez a cada boot. O peseudo-código exemplar a seguir representa uma implementação não limitativa da SetSessionKey(): SetSessionKey( criptoblob ) { PKDcrypt(privateKey, cryptoblob, ssesionKey ); } Após conclusão com sucesso da operação, o registro sessionKey contém uma chave, como uma chave de 256 bits, do criptoblob. 0 algoritmo de chave pública pode ser, por exemplo, RSA de 1024 bits.
Uma vez a chave de sessão simétrica K tenha sido estabelecida entre o software confiável e o criptoprocessa-dor, esta chave pode ser usada para assegurar toda comunicação adicional para e do criptoprocessador. O software confiável e o criptoprocessador podem comunicar-se por meio de métodos simples de Get and Set, cujos parâmetros são cripto-graficamente protegidos para confiabilidade e integridade. Em particular, o bloco de parâmetro B de cada chamada pode ser processado da seguinte forma não limitativa: AES ( M | HMAC( M,kl ), K2 ) , onde: Kl é a primeira metade de K (bits 0 a 127) K2 é a segunda metade de K (bits 128 a 255) AES(M,K) é o resultado de criptografar a mensagem M sob a chave K com AES no modo CBC
HMAC(Μ,K) ê o resultado de computar um HMAC durante uma função de verificação apropriada na mensagem M com a chave K A | B é o resultado de concatenar A e B.
Este formato pode ser usado para os parâmetros de entrada e para os parâmetros das seguintes funções: Set([IN] BOOL needsAck, [IN] BITS128 nonce, [IN] ENUM propertylD, [IN] BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE ack ) onde: needsAcl é um valor boleano, que permite o software confiável indicar, se uma confirmação for requerida.
Nouce é um valor de 128 bits selecionado pelo software confiável. O nonce pode ser usado na confirmação, se uma confirmação fosse solicitada.
PropertylD identifica a propriedade, que esta sendo determinada. Uma lista exemplar de propriedades suportadas é dada abaixo na Tabela 1.
PropertyParamters é uma seqüência de parâmetros, que é específica para cada propertylD.
Por fim, Ack é a confirmação da operação. 0 crip-toprocessador produz ack se e apenas se needsAck foi determinada. Ack é composta do nouce seguido por uma mensagem, que é específica para cada propertylD. TABELA 1 - LISTA DE PROPERTY IDs PARA OBTER A FUNÇÃO Com respeito à property ID Index key, este método escreve uma nova chave e etiqueta de propósito dentro do registro da chave identificada pelo índice.
Quanto à property ID Output lock, este método determina a bandeira de trava de saída. Quando esta bandeira é determinada, a geometria da tela (largura, altura, intensidade de cor, taxa de restauração) bem como a saída do placa gráfica (VGA, DVI) não podem ser alteradas. Em particular, o placa gráfica não executa instruções para alterar estes a-justes enquanto a bandeira de trava de saída é determinada.
Com respeito à property ID L2KeyMgmt, este método ajusta a freqüência de renovação da chave sob a segunda camada de proteção descrita de acordo com a invenção, isto é, en-criptando entrada e saída descritas em mais detalhes abaixo.
Similarmente, a função Get é proposta como segue: Get([IN] BITS128 nonce, [IN] ENUM propertylD, [IN} BYTESEQUENCE propertyParamters, [OUT] BYTESEQUENCE resposta ) onde: nonce é um valor de 12 8 bits selecionado pelo software confiável a ser usado na resposta.
PropertylD identifica a propriedade, que esta sendo determinada. A lista de propriedades suportadas é dada abaixo na Tabela 2.
PropertyParamters é uma seqüência de parâmetros, que é específica para cada propertylD. A resposta contém o resultado da operação. A resposta é composta do nonce seguido por uma mensagem, que é específica a cada propertylD.
TABELA 2 - LISTA DE PROPERTY IDs PARA FUNÇÃO SET
Com respeito às Portas de Saída, este método retorna o ajuste das saídas do placa gráfica, por exemplo, VGA, DVI, etc.
Com respeito ao Código de autenticação, este método retorna a verificação dos conteúdos de uma janela segundo à primeira camada de proteção descrita de acordo com a invenção, isto é, criptografia de sobreposições.
Com respeito à versão de DX-SEC, este método retorna a versão de DX-SEC suportada pelo placa gráfica.
Com respeito à Conta de superfície segura, este método retorna o número de superfícies seguras suportadas pelo placa gráfica.
Com respeito à Conta de superfície de sobreposição, este método retorna o número de superfícies seguras de sobreposição suportadas pelo placa gráfica.
Com respeito ao Tipo primário, este método retorna 1, e fornece flexibilidade futura.
Com respeito à Geometria, este método retorna a largura, altura, taxa de restauração e intensidade de cor da superfície primária. A função Set ainda pode incluir também um método que determina o local ou tamanho de uma sobreposição de região protegida, ou o local e tamanho de uma fração de uma superfície principal (primária) que deve ser decriptografa-da.
Assim, a SetSessionKey acima, função Get and Set diz respeito às modalidades não limitativas de uma interface externa. 0 termo "interface interna" refere-se à interface entre o criptoprocessador e o resto do placa gráfica. Os detalhes deste tipo de interface de acordo com a invenção estão até a implementação de cada placa gráfica individual, sujeitos às restrições a seguir: (1) o criptoprocessador deve ser permanentemente preso ao placa gráfica e (2) a conexão entre o criptoprocessador e o resto do placa gráfica não deve ser exposta.
Nesta consideração, a remoção do criptoprocessador do placa gráfica não deve ser trivial. Se o criptoprocessador for implementado como um chip separado, esta é principalmente uma restrição na interface mecânica que liga o criptoprocessador ao placa gráfica. Tipicamente, o criptoprocessador deve ser soldado no placa gráfica. Alternativamente, o criptoprocessador pode residir no mesmo chip como a GPU principal. 0 uso de interfaces mecânicas padronizadas que permitem o criptoprocessador ser removido, por exemplo, leitoras de cartão inteligentes, suportes de tomada e outros, não é aceitável.
Além disso, a conexão física entre o criptoprocessador e o resto do placa gráfica não deve ser acessível e não deve ser exposta por interfaces padrões. Por exemplo, um conector de USB neste barramento não é aceitável de acordo com a invenção.
Com respeito às regras para gerenciamento de chave, cada chave de índice pode ser usada apenas conforme seu parâmetro de propósito associado. Em uma modalidade, os valores do parâmetro de propósito têm os significados a seguir: L1STREAM: Esta chave apenas pode ser usada com a cifra de fluxo de DX-SEC descrita abaixo com relação à primeira camada de segurança fornecida pela invenção, isto é, a criptografia de sobreposições. L2BL0CK: Esta chave apenas pode ser usada com o cifra de bloco no modo ECB da segunda camada de segurança fornecida pela invenção, isto é, entradas e saídas de criptografia, abaixo descritas. A cifra do bloco no modo ECB é usada para decriptografar os blocos de textura, que foram escritos pelo software confiável.
Nesta consideração, não deve ser mantida nenhuma cópia das chaves, quando o índice tiver sido cheio com um novo valor.
PRIMEIRA CAMADA DE SEGURANÇA - SOBREPOSIÇÕES CRIPTOGRAFADAS
Uma vez que a memória de vídeo pode ser mapeada e lida por software não confiáveis operando na CPU, a memória de vídeo não pode conter informação na forma texto puro. A memória de vídeo sujeito a esta exigência inclui a memória de vídeo usada para restaurar o display. Uma implementação inicial de um sistema que satisfaz este critério de acordo com a invenção encripta os conteúdos de uma superfície de sobreposição. A sobreposição pode então ser decriptografada em movimento pelo hardware DAC, ou quase antes de alcançar o hardware DAC, enquanto a imagem é enviada para o display. A Fig. 3A ilustra uma implementação exemplar de uma tal técnica. 0 conteúdo prêmio criptografado 200, donde quer que encontrado ou gerado incidente à aplicação do soft- ware confiável 210, é recebido através de aplicação confiável 210. Uma troca de autenticação com o criptoprocessador 220 resulta, como o(s) procedimento(s) de troca de autenticação acima descrito(s) nas modalidades exemplares ou por qualquer outra técnica para liberação de chave segura, ou criptográfica ou por uma rota protegida por outros meios. O conteúdo 200 passa da memória do sistema 230 para uma superfície de sobreposição criptografada 240, que sobrepõe a superfície primária 270 da memória de vídeo 260. Junto com o criptoprocessador 220, uma parte de decriptografia 250 da GPU 265 decifra a camada de criptografia fornecida pela sobreposição criptografada 24 0 e passa o conteúdo para pixel selecionado 280 para saída para interface de vídeo digital (DVI)/conversor analógico para digital (DAC) 290 para saída para um dispositivo de transmissão, como um monitor. Porém, o sistema exposto na Fig. 3A não satisfaz todos os critérios descritos acima, uma vez que há apenas uma sobreposição. Para satisfazer o barramento mínimo de funcionalidade necessária para um ambiente confiável, como janelas confiáveis, a invenção permite duas sobreposições em uma modalidade alternativa. A primeira sobreposição "confidencial" é basicamente uma sobreposição que existe nas plataformas hoje, principal-mente para reproduzir vídeo, ampliado tal que seus conteúdos podem ser criptografados. A segunda sobreposição é especificamente elaborada para apresentar a interface do usuário sensível como diálogos de e-commerce. Esta "sobreposição protegida" está sempre no topo e não ocultável, isto é, nenhum chaveamento de cor e tem precedência sobre a primeira sobreposição. A segunda sobreposição pode ser submetida a certas limitações para minimizar o custo. Por exemplo, a segunda sobreposição pode ser fornecida de modo que os dados estejam no mesmo formato de pixel como a primária e não seja capaz de ser esticada ou multi-armazenada temporariamente. Além disso, os conteúdos da sobreposição protegida podem ser verificados pelo hardware. A Tabela 3 resume as diferenças exemplares entre a sobreposição confidencial e a sobreposição protegida.
TABELA 3 . COMPARAÇÃO DE SOBREPOSIÇÕES CONFIDENCIAIS E PROTEGIDAS A Fig. 3B mostra um sistema que inclui tanto sobreposição confidencial, por exemplo, sobreposições 310a, 310b e 310c da cadeia de alternação de sobreposições confidenciais 310, quanto sobreposição protegida 320. Quando pos- sível, as cifras de fluxo são usadas para criptografia de superfície seguro porque elas são mais rápidas e mais simples de implementar que as cifras de blocos (ver Apêndice A para mais detalhes) . Cifras de fluxo encriptam o banco de dados na "posição do byte no fluxo". Assim, o primeiro nível de segurança da invenção inicializa a cifra de fluxo com a chave de criptografia de pixel no canto esquerdo superior da superfície. A cifra de fluxo é avançada para cada pixel contido dentro da superfície de sobreposição independente se o pixel será exibido. 0 sistema proposto contém dois componentes de decriptografia de cifra de fluxo 300a e 300b, um para a sobreposição confidencial e um para a sobreposição protegida, respectivamente. Uma vez os valores de pixel decriptograf ados estão disponíveis, o hardware 280 seleciona o valor de pixel da sobreposição protegida 320, sobreposição confidencial 310 (se a primária 270 for igual à chave de cor e/ou se o chaveamento de cor for permitido) ou primária 270 e envia o valor de pixel para o display do hardware através de DVI/DAC 290. É observado que um adversário pode obter acesso às sobreposições por qualquer número de meios, e assim ou torna a imagem exibida invisível ou substitui o conteúdo de segurança pelo conteúdo ruidoso, uma vez os dados escritos pelo adversário serão também decriptografados. Embora a invenção não diretamente defende contra estes ataques, a invenção não fornece uma avaliação de integridade para garantir que o conteúdo esperado fosse apresentado ao usuário final. Assim, se a saída é alguma coisa diferente da entrada, o usuário ou software confiável 210 pode ser alertado que houve falsificação do conteúdo.
Com respeito a uma interface de software para as sobreposições, além da informação de sobreposição habitual, como a caixa de amarração de fonte e destino, chave de cor de destinação, etc., a sobreposição confidencial 310 mantém que o índice da chave de criptografia seja especificado e a sobreposição protegida 320 adicionalmente mantém que uma localização de memória seja especificada onde o código de redundância cíclica (CRC) dos conteúdos de sobreposição de-criptografados deve ser escrito. A interface de sobreposição confidencial é similar às sobreposições existentes, exceto que o método de alterna-ção especifica o índice da chave de criptografia dos conteúdos do armazenamento temporário de retorno da sobreposição 310a, isto é, o armazenamento temporário para o qual os dados estão sendo alternados. A interface de sobreposição protegida é mais simples e fornece condição para um CRC da superfície a ser enviada para um local da memória após ela ter sido exibida pela primeira vez. A interface de hardware padronizada controla a localização da sobreposição, e torna o CRC disponível ao software interessado em uma base de interrogação. Por e-xemplo, um registro pode indicar se o CRC está disponível, e outro pode permitir o CRC ser lido. Por exemplo, o pseudocó-digo exemplar a seguir pode ser utilizado com respeito à interface de sobreposição protegida: HRESULT UpdateOverlay( LPPOINT ppntUL ); onde : ppntUL especifica o canto esquerdo superior da sobreposição protegida.
Quanto a isto, o software 210 calcula o valor de CRC que se espera estar relacionado com a integridade.
SEGUNDA CAMADA DE SEGURANÇA - ENTRADAS E SAÍDAS CRIPTOGRAFADAS
De acordo com a invenção, para aumentar a GPU 265 para controlar o conteúdo criptografado como entrada e emitir conteúdo criptografado como saída, a criptografia e hardware de decriptografia é adicionado à unidade de mapeamento de textura (no lado de entrada) e a unidade de combina alfa (no lado de saída), e os designers de hardware cooperam para seguir algumas regras implementando esta funcionalidade. Uma vez que as cifras de fluxo não permitem acesso aleatório aos dados criptografados, o sistema usa as cifras de bloco, encriptando os dados, por exemplo, 128 bits em um momento. A unidade de mapeamento de textura decifra em um enchimento de linha de cache e a unidade de combina alfa decifra ao ler uma linha de cache do armazenamento temporário de cor e encripta antes de escrever. As chaves de criptografia usadas nestas operações podem ser diferentes.
As tarefas computacionais diferentes de transmissão 3D, como decodificação de vídeo, são extensões diretas do paradigma já descrito. Em vez de texturas, macroblocos de vídeo servem como a entrada criptografada; e em vez de um armazenamento temporário de cor, a estrutura de saída sendo decodificada serve como a sais criptografada. Se o conteúdo for protegido enquanto ele é liberado em-faixa no fluxo de comando para a GPU 265, como o armazenamento temporário de comando pode ser criptografado também é descrito abaixo.
Fig. 4A descreve o sistema já descrito que executa uma operação terminal frontal, considerando uma superfície criptografada 420 como entrada e emitindo uma superfície criptografada como saída, isto é, a extremidade frontal da textura criptografada e técnicas de armazenamento temporário de cor, por meio do componente de criptografia e decripto-grafia 440. A invenção também fornece textura criptografada 400a, onde a textura 400b pode ser textura típica da memória de vídeo 260. A textura criptografada 400a sai para o componente de decriptografia 450 da GPU 265, que trabalha junto com o criptoprocessador 220 para decriptografar a textura e aplicar os algoritmos de gráficos, como sombreamento, etc. aos dados decriptografados do componente 440 com o componente 430a.
Antecipando a disposição de um desktop de alterna-ção de páginas de compósitos, o sistema da Fig. 4A já descrito pode proteger o todo do desktop, contanto que o hardware DAC possa decriptografar a primária 270 como também as superfícies de sobreposição 310 e 320 acima descritas. É observado que o hardware DAC decifra usando uma cifra de bloco no lugar de uma cifra de fluxo em um tal caso. Um tal sistema permite um número arbitrário de superfícies confidenciais para participar no desktop, com ordenamento de Z arbitrário, combinando, ou até mesmo 3D ou outros efeitos aplicados a eles sem segurança compromitente. As superfícies de sobreposição protegida 320, que deve estar sempre no topo e cujos conteúdos devem ser verificáveis, reside em superfícies separadas. A sobreposição confidencial 310 acima descrita permanece até que ela possa ser emulada em software pela desktop de alternação de página segura, ou plataforma.
Em uma modalidade, além de poder decriptografar a primário 270, o sistema requer que a GPU 265 seja capaz de criptografar texto puro de aplicações de computador de mesa usual também, como processadores de textos confiáveis, assim eles também podem participar no desktop. A Fig. 4B ilustra um tal cenário em que a cadeia de alternação primária 510, incluindo para frente 510b e de retorno 510a, é criptografada. Assim, as superfícies primárias podem ser operadas por um compositor de desktop 430, protegido pelo componente de criptografia/decriptografia 440a para saída dele/entrada nele, respectivamente. Em comunicação com o criptoprocessador 220, um componente de decriptografia 500 decifra a superfície dianteira 510b para saída para DVI/DAC 290. Isto expõe o sistema a certos tipos de ataque que é detalhado abaixo com respeito a assegurar a segurança onde são debatidas algumas estratégias para defender contra estes ataques.
Fig. 4C descreve uma alternativa para a Fig. 4B, em que a transcrição para a cadeia de alternação de sobreposição confidencial 310 é efetuada. Assim, como uma alternativa para criptografar a primária 270, de acordo com a invenção, o hardware pode permitir criptografia da cifra de fluxo para consumo pelo hardware de sobreposição confidenci- al 3 00a que pode decriptografar os dados da cifra de fluxo junto com criptoprocessador 220. Este mecanismo de apresentação pode ser menos caro que criptografar a primária com uma cifra de bloco, mas pode não ser como escalável ou flexível, como um intercâmbio planejado. Uma vez a sobreposição confidencial 310 usos uma cifra de fluxo para criptografia, uma operação razoável para suportar neste contexto é uma o-peração de 'cópia' na qual a entrada é decriptografada através do componente de decriptograf ia 44 0b que usa a cifra de bloco da superfície de entrada 510a e re-criptografada pelo componente 440b que usa a sobreposição da cifra de fluxo. Estas modalidades, e várias combinações destes, são úteis, por exemplo, onde uma entrada criptografada de uma vez é suficiente, desde que qualquer número de entradas de texto puro possa ser combinado com a entrada criptografada para gerar saída criptografada.
Com respeitos em garantir a segurança, há várias medidas que podem ser implementadas de acordo com a invenção. Primeiro, a segunda camada acima de segurança descrita conta com a idéia que texto puro não pode ser vazado da GPU 265 uma vez que ele foi decriptografado. Por exemplo, nenhum registro de depuração ou outras instalações existe que permite o texto puro ser lido fora do chip pela unidade de processo central (CPU) do hospedeiro. Além de tomar cuidado de elaborar o hardware para evitar tais vazamentos, a série de instruções da GPU 265 é projetado de forma que seja impossível permitir decriptografia da entrada sem também permitir criptografia da saída. Além disso, o hardware evita vazamen- to de dados de texto puro, quer por um acionador fraudulento, por código adverso ou por acidente.
Além disso, o hardware pode não vazar as chaves. Uma vez as chaves são liberadas para a GPU 265 pelo protocolo criptográfico descrito de acordo com a troca de autenticação, elas apenas estão disponíveis para os componentes de criptografia e de decriptografia.
Como acima debatido, se a GPU 2 65 for capaz de criptografar o texto puro para exibição na primária 270, esta facilidade é considerada uma vulnerabilidade no sistema uma vez que esta facilidade de criptografia é o único mecanismo descrito no qual um adversário pode ter o texto puro e o texto de cifra correspondente ao mesmo tempo disponível. Mapeando a superfície primária de modo que ela seja examiná-vel pela CPU e criando uma janela que deve ser criptografada, o adversário pode construir um subconjunto dos blocos de texto de cifra que correspondem a blocos de texto puro conhecidos. Estes assim denominados "ataques de dicionário" trabalham melhor quando o número de blocos que são "interessantes" for pequeno. Por exemplo, para exibição de caixas de diálogo preto-e-branco em um modo de exibição 32bpp, uma vez que existem 4 pixels por bloco, apenas 16 blocos são necessários para exibir um tal diálogo. Uma possível avenida para um adversário que descobriu os 16 blocos de texto de cifra seria falsificar um diálogo para o usuário de fim criando conteúdo que é significativo mesmo após a decriptografia pela GPU 265. Por esta razão, a sobreposição protegida é melhor adequada para diálogos resistentes à falsificação por que ela permite aplicações detectar quando o usuário final não viu o que era esperado. Há duas boas estratégias assim para frustrar os adversários que desejam criar dicionários. Primeiro, uma vez que os dicionários apenas são bons para uma determinada chave, mudando a chave e re-encriptando o conteúdo força o adversário recomeçar com um novo dicionário. Além disso, para criptografia da primária, a chave não necessita ser posta disponível ao software - ela pode ser enrolada no hardware e o software apenas necessita ser notificado que a chave mudou. Considerando que a chave anterior ainda está disponível, o software pode usar a chave anterior para decriptogra-far e recriptografar as partes da primária que não mudaram. Conseqüentemente, o criptoprocessador 220 periodicamente enrola a chave de criptografia para a primária 270 e de um tal modo que a chave anterior ainda encontra-se disponível, por exemplo, uma ação de armazenamento temporário dupla dos índices de chave de criptografia, e de uma forma que notifique o software que a chave foi enrolada.
Outra estratégia envolve a codificação do local dentro da imagem antes da criptografia. Por exemplo, o local de pixel (x,y) na imagem (ou algum valor derivado, como a deslocamento de imagem) pode ser exclusivo or-ed (XOR'd) nos dados de pixel antes de encriptá-lo; a operação pode ser desfeita depois após a decriptografia. Como resultado, os blocos para pixels em áreas diferentes da superfície são criptografados diferentemente, e o mapeamento texto puro- texto de cifra apenas é significante para uma determinada posição na superfície que está indisponível a um assaltante. A presente invenção também fornece formatos arranjados predefinidos. Considerando que texturas e superfícies de tela preta requerem acesso aleatório, elas devem ser criptografadas com cifra de blocos. Há boa sinergia entre o tamanho do bloco típico para uma cifra de bloco e o tamanho de linha de cache típico para um acelerador moderno 3D, por exemplo, se a linha de cache e o tamanho de bloco foram ambos 128 bits, então criptografia e decriptografia eficazes podem ser implementadas no hardware. Até mesmo se houver diferenças suaves (por exemplo, tamanho de bloco de 128 bits e tamanho de linha de cache de 256 bits) a implementação de hardware é igualmente para ser eficaz.
Um problema com os dados de textura criptografados é que um esquema de criptografia de bloco requer que um bloco adjacente de bytes esteja disponível antes de poder ser criptografado ou decriptografado; e um enchimento de linha de cache requer que os dados de pixel sejam 'arranjados', isto é, que a tradução de uma posição (X,Y) na imagem para um endereço seja formada tal que o enchimento de linha de cache dê uma região 2D de pixels. Até agora, os vendedores de hardware expuseram ostensivamente formatos de superfície lineares ao mesmo tempo dados de imagem de arranjo sem o conhecimento da aplicação. Uma vez o software confiável estará emitindo os dados de textura criptografados, porém, o software tem que ter um conhecimento de priori do esquema de arranjo de modo que ele possa criptografar os blocos adjacen- tes de dados e pode preservar a localidade 2D. Em resposta, a invenção define um dicionário de formatos de imagem arranjada, incluindo YUV 4:4:4, 4:2:2 e 4:2:0 como também formatos RGB, para uso pela aplicação. O desempenho destes formatos pode não ser totalmente tão alto quanto se as imagens fossem arranjadas em um formato hardware-específico, mas a criptografia vale uma degradação de desempenho leve, isto é, segurança em troca de velocidade.
Com respeito a AYUV/ARGB (32bpp, compactado), este formato de superfície de 32 bpp contém um canal alfa além dos canais de cor de 8 bits para as amostras de luminância (Y) e cromaticidade (U e V) . Alternativamente, pode conter um padrão ARGB 32bpp, desde que ambos formatos sejam 32bpp e compactados. 0 debate a seguir assume AYUV. O layout linear encontra-se como na Fig. 5A. O deslocamento de pixel (X,Y) na imagem é como segue : Deslocamento=Y*Pitch+X*4 Assumindo um tamanho de bloco de criptografia de 128 bits e tamanho de linha de cache, 4 pixels podem ajustar-se em um único bloco. Intercalando o mínimo de bits significativos de X e Y antes de gerar o endereço resultará em localidade 2D melhorada em um enchimento de linha de cache. Estes blocos são colocados linearmente, de acordo com o formato . 0 layout da imagem resultante está ilustrado pela Fig. 5B. Cada retângulo numerado é um pixel e os retângulos em negrito são blocos criptografados. Peseudocódigo exemplar para a função de arranjo da invenção para este formato que converte uma localização (x,y) na imagem para um deslocamento é como segue: DWORD
SwizzleAYUV( DWORD x, DWORD y, DWORD Pitch ) { // pitch é o número de bits por linha varrida de macros blocos return BlockOffset+IntraBlockOffset*4; } Com respeito a YUY2 (16bpp, compactado), este formato de superfície horizontalmente sub-amostra as amostra de ' croma ti cidade' U e V por um fator de 2. O resultado é um formato de imagem compactada que rateia em 16 bits por pixel. 0 layout linear é mostrado na Fig. 6A, a forma de arranjo da invenção aloca blocos criptografados de 4x2 pixels, conforme mostrado na Fig. 6B. Quanto às Figs. 5A e 5B, os blocos de 128 bits são arranjados também. É observado que com a Fig. 6B e com o peseudocódigo de arranjo exemplar a seguir que traduz os pares das coordenadas (x,y) em compilações de imagem, U e V são assumidos ter as mesmas coordenadas X: DWORD
SwizzleYUY2Y( DWORD x, DWORD y, const SURFACEDESC& sd ) { assert( x < sd.Width ); assert( y < sd.Height ); DWORD BlockOffset DWORD dwRet = BlockOffset+(IntraBlockOffsetccl); return dwRet; } DWORD
SwizzleYUY2U( DWORD x, DWORD y, const SURFACEDESC& sd ) DWORD BlockOffset return BlockOffset+(IntraBlockOffset<<l)+1; } DWORD
SwizzleYUY2V( DWORD x, DWORD y, const SURFACEDESC& sd ) Com este respeito, para o peseudocódigo acompanhando o arranjo das Figs. 5A, 5B, 6A e 6B, o pitch da superfície é definido como o número de bytes por linha varrida de blocos de 128 bits.
Com respeito ao plano compactado (12bpp), este formato de superfície sub-amostram U e V por um fator de 2 horizontalmente e de modo vertical. As amostras de luminân-cia e cromaticidade são postas em duas partes separadas da superfície. O layout linear do plano compactado (12bpp) está mostrado na Fig. 7A. 0 pitch da superfície é definido quanto ao número de bytes por linha varrida de blocos de 512 bits no plano Y. O pitch do plano UV é metade do pitch do plano Y porque tem V tanto quanto amostra, mas duas vezes tanto quanto elementos de cor por amostra. O formato de imagem arranjada resultante de acordo com a invenção é mostrado na Fig. 7B.
O pseudocódigo exemplar para a função de arranjo da invenção para este formato que traduz as coordenadas (x,y) de compilações para elementos Y, U e V é como segue: DWORD
SwizzlePP12Y( DWORD x, DWORD y, const SURFACEDESC& sd ) assert( x < sd.Width );
DWORD
SwizzlePP12U( DWORD x, DWORD y, const SURFACEDESC& sd ) DWORD
SwizzlePP12V( DWORD x, DWORD y, const SURFACEDESC& sd ) TERCEIRA CAMADA DE SEGURANÇA - ARMAZENAMENTO TEMPORÁRIOS DE COMANDO CRIPTOGRAFADOS
As facilidades das modalidades acima descritas com respeito às primeira e segunda camadas de segurança podem ser ampliadas de acordo com a invenção para criptografar os armazenamento temporários de comando submetidos à GPU 265 além dos dados de imagem nos quais a GPU 265 está operando. Esta funcionalidade é desejável se a aplicação 210 desejar proteger o conteúdo que é enviado à em-banda do hardware no armazenamento temporário de comando. Fig. 9A mostra a deco-dificação de vídeo usando um armazenamento temporário de comando criptografado 900, por meio do qual o conteúdo é liberado à textura criptografada 400a e é decriptografado através do componente de decriptografia 450 e decodificado pelo decodificador de vídeo 430b. Embora seja possível para o armazenamento temporário de comando ser criptografado, o conteúdo é criptografado na memória de vídeo como também no armazenamento temporário de comando, como mostrado pela estrutura decodificada criptografada 420a. Encriptando o armazenamento temporário de comando é assim apropriado em situações como esta, onde macroblocos estão na memória de vídeo e com vetores de movimento e outros comandos enviados no fluxo de comando. A coação de atomicidade para os dados de textura criptografados também se aplica aos dados de armazenamento temporário de comando criptografados, com o impedimento a criptografia do armazenamento temporário de cor pode não ser suficiente para proteger o conteúdo em questão. Os armazenamento temporários intermediários, por exemplo, o armazenamento temporário Z, pode também ser criptografado para proteger o sistema contra ataques no texto plano. A Fig. 9B mostra transmissão 3D exemplar usando um armazenamento temporário de comando criptografado de acordo com a invenção. Como ilustrado, os comandos de transmissão 3d 810 são crip- tografados na rota para o decodificador de vídeo 430c. Os dados de textura 400a são decriptografados através do componente de decriptografia 450 e processados de acordo com os comandos 810 através do decodificador de vídeo 430c. Incidente a isto, os dados no armazenamento temporário de cor 820 são criptografados pelo componente de criptografi-a/decriptografia 830. A detecção de falsificação pode ser feita antes do consumo do armazenamento temporário de comando, usando dois passos, ou após o armazenamento temporário de comando ter sido consumido. Em uma modalidade, a detecção de falsificação é habilitada após exibição ou transmissão do conteúdo.
MODALIDADES ALTERNATIVAS ADICIONAIS - CRIPTOGRAFIA DE SAÍDA DE PLACA GRÁFICA
Em cada uma das modalidades acima, embora confiabilidade e integridade tenham sido demonstradas e descritas com respeito à parte da linha pontilhada da Fig. 2, confiabilidade e integridade não foram demonstradas com respeito à saída de vídeo, isto é, teoricamente, a interface entre o placa gráfica e o dispositivo de transmissão, como um monitor e/ou dispositivo de transmissão em si está sujeito a um ataque.
Assim, nas modalidades acima descritas, como mostrado na Fig. 9A, em algum ponto durante o processo, embora o conteúdo seja protegido na memória de vídeo e durante o processamento do placa gráfica, os dados são enviados para o DVI/DAC 290 com clareza. Como resultado, os dados podem ser pirateados, ou alterados na rota para o dispositivo de transmissão, e enquanto dentro do dispositivo de transmissão .
Assim, conforme uma modalidade alternativa da invenção que pode ser combinada opcionalmente com outras modalidades aqui descritas, um criptoprocessador irmão 220b é fornecido no dispositivo de transmissão para complementar à funcionalidade executada pelo criptoprocessador 220a. Neste respeito, componente de criptografia 910a comunicativamente acoplado ao criptoprocessador 220a encripta os dados antes da liberação para o componente de DVI/DAC 290 e o componente de decriptografia 910b comunicativamente acoplado ao criptoprocessador 220b decifra os dados como parte da exibição ou transmissão que ocorre, impedindo pirataria dos dados. O componente de criptografia 910a pode ser incluído alternada-mente com o componente de DVI/DAC 290. Em resumo, aplicando a mesma criptografia e decriptografia, e técnicas de administração fundamentais, o conteúdo pode ser protegido ao longo do canal seguro de gráficos inteiro para criptografi-camente proteger a liberação e processamento seguros do conteúdo .
Como acima mencionado, embora modalidades exemplares da presente invenção tenham sido descritas com relação aos vários dispositivos de computação, hardware, software e arquiteturas de rede, os conceitos subjacentes podem ser a-plicados a qualquer dispositivo de computação ou sistema em que é desejável proteger o conteúdo de uma fonte confiável. Assim, as técnicas para criptograficamente proteger o conteúdo de segurança de acordo com a presente invenção podem ser aplicadas em uma variedade de aplicações e dispositivos. Por exemplo, os métodos para criptograficamente proteger o conteúdo de segurança da invenção podem ser aplicados ao sistema operacional de um dispositivo de computação, fornecido como um objeto separado no dispositivo, como parte de outro objeto, como um objeto capaz de ser baixado de um servidor, como um objeto distribuído, etc. Embora linguagens de programação exemplares, peseudocódigo, nomes e exemplos tenham sido aqui selecionados como representativos de várias escolhas, as linguagens, peseudocódigo, nomes e exemplos não são intencionados ser limitativos.
As várias técnicas aqui descritas podem ser implementadas com relação ao hardware ou software ou, onde apropriado, com uma combinação de ambos. Assim, os métodos e a-parelhos da presente invenção, ou certos aspectos ou partes desta, pode ter a forma de código de programa (isto é, instruções) personificadas em meios tangíveis, como disquetes flexíveis, CD-ROMs, discos rígidos, ou qualquer outro médio de armazenamento legível por máquina, em que, quando o código de programa é carregado e executado por uma máquina, como um computador, a máquina se torna um aparelho para praticar a invenção. No caso de execução do código de programa em computadores programáveis, o dispositivo de computação incluirá em geral um processador, um meio de armazenamento legível pelo processador (incluindo memória e/ou elementos de armazenamento voláteis e não voláteis), pelo menos um dispositivo de entrada, e pelo menos um dispositivo de saída. Um ou mais programas que podem utilizar as técnicas da presente invenção, por exemplo, através do uso de um API de processamento de dados, sistema de operação, aplicação confiável ou outros, são preferivelmente implementados em uma linguagem de programação orientada por procedimentos ou objetos de alto nível para comunicar com um sistema de computador. Porém, o(s) programa(s) pode(m) ser implementado(s) na montagem ou linguagem de máquina, se desejado. Em qualquer caso, a linguagem pode ser linguagem compilada ou interpretada, e em várias modalidades da invenção, impostas condições nas implementações do hardware da GPU 265.
Também os métodos e aparelho da presente invenção podem ser praticados por comunicações incorporadas na forma de código de programa que é transmitido em algum médio de transmissão, como em instalação elétrica ou cabeamento, por fibras ópticas ou por qualquer outra forma de transmissão, em que, quando o código de programa é recebido e carregado e executado por uma máquina, como uma EPROM, um arranjo de portal, um dispositivo de lógica programável (PLD), um computador de cliente, um registrador vídeo ou outros, ou uma máquina receptora tendo um placa gráfica e capacidades de criptografia como descrito nas modalidades exemplares acima se torna um aparelho para praticar a invenção. Quando implementado em um processador de propósito geral, o código de programa combina com o processador para fornecer um único aparelho que opera para invocar a funcionalidade da presente invenção. Adicionalmente, qualquer técnica de armazenamento usada com relação à presente invenção invariavelmente pode ser uma combinação de hardware e software.
Embora a presente invenção tenha sido descrita com relação às modalidades preferidas das várias figuras, é para ser entendido que podem ser usadas outras modalidades similares ou podem ser feitas modificações e adições à modalidade descrita para executar a mesma função da presente invenção sem dela divergir. Por exemplo, embora sejam descritos ambientes de rede exemplares da invenção no contexto de um ambiente em rede, como ambiente em rede não hierarquizada, alguém de habilidade na técnica reconhecerá que a presente invenção não é a ele limitada, e que os métodos, como descritos no presente pedido de patente podem aplicar a qualquer dispositivo ou ambiente de computação, como um console de jogos, computador de mão, computador portátil, etc., com ou sem fio, e podem ser aplicados a quaisquer de vários de tais dispositivos de computação conectados por uma rede de comunicações, e interagindo ao longo da rede. Além disso, deve ser enfatizado que uma variedade de plataformas de computador, incluindo sistemas operacionais de dispositivos manuais e outros sistemas de operação específicos em aplicação são contemplados, especialmente uma vez que o número de dispositivos em rede sem fio continua a proliferar. Ainda também, a presente invenção pode ser implementada dentro e ao longo de uma pluralidade de chips ou dispositivos de co-processamento, como um dispositivo tendo uma pluralidade de GPUs, e o armazenamento pode ser efetuado similarmente ao longo de uma pluralidade de dispositivos. Portanto, a presente invenção não deve ser limitada a qualquer modalidade apenas, mas do contrário deve ser interpretada na amplitude e escopo de acordo com as reivindicações em anexo.
APÊNDICE A. CIFRAS DE FLUXO VERSUS CIFRAS DE BLOCO
Este Apêndice detalha as diferenças entre as cifras de fluxo e as cifras de bloco uma vez que elas dizem respeito ao conteúdo deste documento.
Como uma regra, as cifras de fluxo são mais rápidas e mais simples para implementar que as cifras de bloco.
Como insinua o nome, cifras de fluxo encriptam e decifram um fluxo de bytes. Para decriptografar o byte de Nth no fluxo, cifra começa no princípio e avança um byte de cada vez para o deslocamento desejado dentro do fluxo.
Em contraste, as cifras de bloco que estão operando no modo de livro de código eletrônico podem criptografar ou decriptografar blocos arbitrários nos dados, mas devem criptografar/decriptografar um bloco completo de cada vez. Um tamanho de bloco típico é 16 bytes.
As cifras de fluxo são usadas de um tal modo que os mesmos dados nunca são criptografados duas vezes, isto é, a chave usada para criptografia e decriptografia frequentemente deve ser mudada. Quando usado para reprodução de vídeo prêmio, por exemplo, alterando as chaves uma vez por estrutura é suficiente.
Como uma nota final, existem cifras de bloco de boa qualidade no domínio público.

Claims (41)

1. Método para criptograficamente proteger conteúdo de segurança com relação a um sistema de gráficos confiável de um dispositivo de computação, o sistema de gráficos confiável tendo memória de video, pelo menos uma unidade de processamento de gráficos (GPU) e um dispositivo de processamento criptográfico comunicativamente acoplado a pelo menos uma GPU, caracterizado pelo fato de que compreende: solicitar, por um de uma aplicação e um dispositivo, o sistema gráfico para executar o processamento e renderização do conteúdo de segurança, em que a solicitação inclui transmitir por um de uma aplicação e dispositivo, uma chave de sessão para o sistema gráfico e transmitir o conteúdo de segurança para pelo menos uma parte criptografada da memória de video; decriptografar o conteúdo de pelo menos uma parte criptografada da memória de video por menos uma GPU em comunicação com um dispositivo de processamento criptográfico; executar um dentre processamento e renderização no conteúdo decriptografado por menos uma GPU; e dar saída ao conteúdo de pelo menos uma GPU.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: a etapa de decriptografar é realizada por um mecanismo de decriptografia de uma unidade de entrada de pelo menos uma GPU, e adicionalmente compreendendo criptografar o conteúdo com um mecanismo de criptograf ia/decriptograf ia de uma unidade de saída de pelo menos uma GPU.
3. Meio legível por computador tendo nele armazenado uma pluralidade de instruções executáveis por computador caracterizado pelo fato de que a pluralidade de instruções inclui: solicitar, por um de uma aplicação e um dispositivo, o sistema gráfico para executar o processamento e rende-rização do conteúdo de segurança, em que a solicitação inclui transmitir por um de uma aplicação e dispositivo, uma chave de sessão para o sistema gráfico e transmitir o conteúdo de segurança para pelo menos uma parte criptografada da memória de vídeo; decriptografar o conteúdo de pelo menos uma parte criptografada da memória de vídeo por pelo menos uma GPU em comunicação com um dispositivo de processamento criptográfico; executar um dentre processamento e renderização no conteúdo decriptografado por pelo menos uma GPU; e dar saída ao conteúdo de pelo menos uma GPU.
4. Dispositivo de coprocessamento, caracterizado pelo fato de que os módulos executáveis por computador do pelo menos um meio legível por computador compreendem: um dispositivo para solicitar por um de uma aplicação e dispositivo, o sistema de gráficos para executar um dentre processamento e renderização do conteúdo de segurança, em que o dispositivo para solicitar inclui um dispositivo para transmitir por um dentre uma aplicação e um dispositivo, uma chave de sessão para o sistema gráfico e um dispositivo para transmitir o conteúdo de segurança para pelo menos uma parte criptografada da memória de vídeo; um dispositivo para decriptografar o conteúdo de pelo menos uma parte criptografada da memória de video por pelo menos uma GPU em comunicação com o dispositivo de processamento criptográfico; um dispositivo para executar um dentre processamento e renderização no conteúdo decriptografado por pelo menos uma GPU; e um dispositivo para dar saida ao conteúdo de pelo menos uma GPU.
5. Dispositivo de computação que compreende um dispositivo para criptograficamente proteger conteúdo de segurança com relação a um sistema gráfico confiável de um dispositivo de computação, o sistema gráfico confiável tendo memória de video, pelo menos uma unidade de processamento de gráficos (GPU) e um dispositivo de processamento criptográfico comunicativamente acoplado a pelo menos uma GPU, caracterizado pelo fato de que compreende: um dispositivo para solicitar por um dentre uma a-plicação e um dispositivo, o sistema gráfico para executar um dentre processamento e renderização do conteúdo de segurança, em que um dispositivo para solicitar inclui um dispositivo para transmitir por um dentre uma aplicação e dispositivo, uma chave de sessão para o sistema gráfico e um dispositivo para transmitir o conteúdo de segurança para pelo menos uma parte criptografada da memória de video; um dispositivo para decriptografar o conteúdo de pelo menos uma parte criptografada da memória de video por pelo menos uma GPU em comunicação com um dispositivo de processamento criptográfico; um dispositivo para executar um dentre processamento e reriderização no conteúdo decriptografado por pelo menos uma GPU; e um dispositivo para dar saida ao conteúdo de pelo menos uma GPU.
6. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que se a saida do dispositivo para dar saida for diferente do conteúdo de segurança do dispositivo para solicitar ajustando para qualquer processamento executado no conteúdo de segurança por pelo menos uma GPU, um dentre uma aplicação e dispositivo é alertado da diferença.
7. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que o dispositivo para transmitir inclui um dispositivo para transmitir o conteúdo de segurança para pelo menos uma superfície de sobreposição criptografada que sobrepõe pelo menos uma superfície primária da dita memória de vídeo.
8. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que o dispositivo para decriptografar o conteúdo de pelo menos uma parte criptografada da memória de vídeo inclui um dispositivo para decriptografar uma fração geométrica de uma superfície primária, onde os pixels diferentes da fração geométrica não são decriptografados.
9. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que o processador criptográfico está permanentemente ligado à placa gráfica, por um de (A) adicionando o processador criptográfico a um chip existente e (B) adicionando o processador criptográfico como um chip separado à placa gráfica, onde a conexão física entre o processador criptográfico e o resto da placa gráfica não é acessível e não é exposta.
10. Dispositivo de computação, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para decriptografar inclui um dispositivo para decriptografar pelo menos uma superfície de sobreposição criptografada por um mecanismo de decriptografia da GPU comunicativamente acoplada a um dispositivo de processamento criptográfico.
11. Dispositivo de computação, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para decriptografar inclui um de (A) um dispositivo para decriptografar pelo menos uma superfície de sobreposição criptografada em movimento por hardware de conversão digital para analógico (DAC) do sistema gráfico à medida que o conteúdo é emitido de acordo com a saída do dispositivo para dar saída e (B) um dispositivo para decriptografar pelo menos uma superfície de sobreposição criptografada em movimento logo antes do conteúdo alcançar o hardware de DAC do sistema gráfico.
12. Dispositivo de computação, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para decriptografar inclui um dispositivo para decriptografar pelo menos uma superfície de sobreposição criptografada antes do conteúdo alcançar o hardware de DAC do sistema gráfico por um componente não tendo nenhum canal de retorno para o sistema hospedeiro.
13. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda inclui: um dispositivo para recriptografar o conteúdo por pelo menos uma GPU em comunicação com o dispositivo de processamento criptográfico antes da saída através do dispositivo para dar de saída; e um dispositivo para decriptografar o conteúdo re-criptografado por pelo menos um segundo dispositivo de processamento criptográfico de um dispositivo de computação externo .
14. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que o conteúdo é transmitido na forma digital para um dispositivo externo tendo um segundo dispositivo de processamento criptográfico e a decriptografia do dispositivo para decriptografia ocorre em um dispositivo externo.
15. Dispositivo de computação, de acordo com a reivindicação 13, caracterizado pelo fato de que o dispositivo de computação externo é um de (A) um monitor, (B) um aparelho decodificador e (C) um dispositivo de renderização de processamento de sinal digital (DSP).
16. Dispositivo de computação, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo para transmitir inclui um dispositivo para transmitir o conteúdo de segurança para um de (A) uma primeira sobreposição confidencial criptografada para renderização básica do conteúdo de segurança e (B) uma segunda sobreposição protegida criptografada especificamente projetada para apresentar interfaces de usuário sensíveis, (C) uma primeira região criptografada de uma superfície primária para renderização básica do conteúdo de segurança e (D) uma segunda região criptografada de uma superfície primária especificamente projetada para apresentar interfaces de usuário sensíveis.
17. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que o dispositivo para decriptografar inclui um dispositivo para calcular uma compilação criptográfica dos dados decriptografados, e o dispositivo de computação adicionalmente inclui: um dispositivo para transmitir a compilação criptográfica a um dentre uma aplicação e dispositivo para assegurar que os pixels exibidos são os pixels enviados com relação à solicitação por um dentre uma aplicação e um dispositivo por um dispositivo de solicitação.
18. Dispositivo de computação, de acordo com a reivindicação 16, caracterizado pelo fato de que a segunda sobreposição protegida criptografada está sempre no topo e não obscurecivel e em que os conteúdos da segunda sobreposição protegida criptografada são verificados por pelo menos uma GPU.
19. Dispositivo de computação, de acordo com a reivindicação 16, caracterizado pelo fato de que um dispositivo para decriptografar inclui (A) um dispositivo para decripto-grafar com um primeiro componente de decriptografia de cifras de fluxo os conteúdos da primeira sobreposição confidencial criptografada, (B) um dispositivo para decriptografar com um segundo componente de decriptografia de cifras de fluxo os conteúdos da segunda sobreposição protegida criptografada, (C) um dispositivo para decriptografar com um primeiro componente de decriptografia de cifras de fluxo os conteúdos da primeira região criptografada de superfície primária e (D) um dispositivo para decriptografar com um segundo componente de decriptografia de cifras de fluxo os conteúdos da segunda região criptografada de superfície primária.
20. Dispositivo de computação, de acordo com a reivindicação 19, caracterizado pelo fato de que pelo menos um bit de cada pixel em uma superfície primária é usado para de- terminar a relação em uma superfície protegida virtual para o pixel, em que a placa gráfica seleciona uma chave de decrip-tografia apropriada para o pixel com base em pelo menos um bit.
21. Dispositivo de computação, de acordo com a reivindicação 20, caracterizado pelo fato de que se pelo menos um bit contiver um valor zero, então a superfície protegida virtual associada com pelo menos um bit é interpretada como uma região para não decriptografar.
22. Dispositivo de computação, de acordo com a reivindicação 19, caracterizado pelo fato de que ainda inclui um dispositivo para selecionar, uma vez os valores de pixel de-criptografados estão disponíveis, por um componente de seleção de pixel de pelo menos uma GPU, o valor de pixel de um dentre (A) a segunda sobreposição protegida criptografada, (B) a primeira sobreposição confidencial criptografada e (C) uma superfície primária.
23. Dispositivo de computação, de acordo com a reivindicação 16, caracterizado pelo fato de que a solicitação do dispositivo para solicitar inclui pelo menos um dentre (A) uma caixa de ligação de fonte e destino de pelo menos uma superfície de sobreposição criptografada, (B) uma chave de cor de destino de pelo menos uma superfície de sobreposição criptografada, (C) no caso da primeira sobreposição confidencial criptografada, uma especificação de um índice de chave de criptografia dos conteúdos de um armazenamento temporário de retorno de sobreposição para o qual os dados devem ser alternados, (D) no caso da segunda sobreposição protegida criptografada, uma especificação de um local de memória onde pelo menos um de um código de redundância cíclico (CRC) , uma medida de integridade e um valor de compilação dos conteúdos de sobreposição decriptografados são para ser escritos, (E) uma caixa de ligação de fonte e destino de pelo menos uma superfície primária criptografada, e (F) uma chave de cor de destino da dita pelo menos uma superfície primária criptografada.
24. Dispositivo de computação, de acordo com a reivindicação 23, caracterizado pelo fato de que um dentre uma aplicação e um dispositivo calcula pelo menos um do CRC, medida de integridade e valor de compilação se um dentre uma aplicação e um dispositivo estiver relacionado com a integridade do conteúdo.
25. Dispositivo de computação, de acordo com a reivindicação 5, caracterizado pelo fato de que pelo menos um armazenamento temporário de comando enviado a uma unidade de decodificação de vídeo da pelo menos uma GPU incidente à solicitação do dispositivo para solicitar é criptografado por pelo menos um de uma aplicação e um dispositivo e decripto-grafado através da unidade de decodificação de vídeo em comunicação com a unidade de processamento criptográfico.
26. Dispositivo de computação, de acordo com a reivindicação 25, caracterizado pelo fato de que ainda compreende um dispositivo para detectar a falsificação de pelo menos um armazenamento temporário de comando um dentre (A) usando duas passagens antes do consumo do pelo menos um armazenamento temporário de comando e (B) após o armazenamento temporário de comando ter sido consumido.
27. Dispositivo de computação, de acordo com a reivindicação 26, caracterizado pelo fato de que: o dispositivo para decriptografar o conteúdo de pelo menos uma parte criptografada da memória de vídeo compre- ende um mecanismo de decriptografia de uma unidade de entrada de pelo menos uma GPU, adicionalmente compreendendo: um dispositivo para criptografar o conteúdo com um mecanismo de criptografia/decriptografia de uma unidade de saida da pelo menos uma GPU.
28. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que a unidade de entrada é uma unidade de mapeamento de textura e a unidade de saida é uma unidade de combinação alfa, e em que pelo menos uma parte criptografada da memória de video é uma superfície de textura criptografada.
29. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que o conteúdo de segurança é um dentre dados de textura, texto puro e macrob-locos de vídeo.
30. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que o dispositivo para criptografar e um dispositivo para decriptografar incluem um dispositivo para criptografar e um dispositivo para decriptografar usando cifras de bloco, respectivamente.
31. Dispositivo de computação, de acordo com a reivindicação 28, caracterizado pelo fato de que o mecanismo de decriptografia da unidade de mapeamento de textura decripto-grafa em um enchimento de linha de cache e em que o mecanismo de criptografia/decriptografia da unidade de combinação alfa criptografa antes de escrever.
32. Dispositivo de computação, de acordo com a reivindicação 28, caracterizado pelo fato de que ainda inclui um dispositivo para decriptografar pelo mecanismo de criptogra-fia/decriptografia da unidade de combinação alfa ao ler uma linha de cache de um armazenamento temporário de cor em memória de video.
33. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que ainda inclui: um dispositivo para alternar o conteúdo de saida criptografado de uma superfície primária criptografada posterior a uma superfície primária criptografada frontal da memória de vídeo; um segundo dispositivo para decriptografar o conteúdo de saída criptografado por um segundo mecanismo de de-criptografia de pelo menos uma GPU em comunicação com o dispositivo de processamento criptográfico; e um segundo dispositivo para dar saída ao conteúdo de saída.
34. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que o dispositivo para dar saída inclui um dispositivo para dar saída ao conteúdo criptografado para uma cadeia de alternação de sobreposição confidencial e os módulos executáveis por computador adicionalmente incluem: um dispositivo para alternar o conteúdo de saída criptografado de uma superfície confidencial criptografada posterior para uma superfície confidencial criptografada frontal, onde a criptografia através do mecanismo de cripto-grafia/decriptografia inclui um dispositivo para criptografar utilizando criptografia de cifras de fluxo; e um segundo dispositivo para decriptografar o conteúdo de saída criptografado por um mecanismo de decriptografia de cifras de fluxo de pelo menos uma GPU em comunicação com o dispositivo de processamento criptográfico.
35. Dispositivo de computação, de acordo com a reivindicação 34, caracterizado pelo fato de que ainda compreende : um dispositivo para codificar um local dentro do conteúdo antes da criptografia através do dispositivo para criptografar; e um dispositivo para decodificar o local dentro do conteúdo após a decriptografia pelo segundo dispositivo para decriptografar, onde o local está externamente indisponível preservando a integridade de um mapeamento de texto puro-texto de cifras.
36. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que se a saída do dispositivo para dar saída for diferente do conteúdo de segurança de um dispositivo para solicitar ajuste para qualquer processamento executado no conteúdo de segurança por pelo menos uma GPU, um dentre uma aplicação e um dispositivo é alertado da diferença.
37. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que os módulos executáveis por computador adicionalmente incluem: um dispositivo para recriptografar o conteúdo por pelo menos uma GPU em comunicação com o dispositivo de processamento criptográfico antes da saída através do dispositivo para dar saída; e um dispositivo para decriptografar o conteúdo re-criptografado por pelo menos um segundo dispositivo de processamento criptográfico de um dispositivo de computação externo .
38. Dispositivo de computação, de acordo com a reivindicação 37, caracterizado pelo fato de que um dispositivo de computação externo é um dentre (A) um monitor, (B) um aparelho decodificador e (C) um dispositivo de renderização de processamento de sinal digital (DSP).
39. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que as texturas criptografadas e superfícies criptografadas de tela preta liberadas por um dentre uma aplicação e um dispositivo são codificadas com cifras de bloco, e um dentre uma aplicação e dispositivo arranja as cifras de bloco com um formato prede-finido de arranjo que converte um local (x,y) no conteúdo para um deslocamento para pelo menos um dentre YUV, RGB, YUY2 e formatos planares compactados.
40. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que pelo menos um armazenamento temporário de comando enviado a uma unidade de decodificação de vídeo de pelo menos uma GPU incidente à solicitação do dispositivo para solicitar é criptografado por pelo menos um dentre uma aplicação e dispositivo e decripto-grafado através da unidade de decodificação de vídeo em comunicação com a unidade de processamento criptográfico.
41. Dispositivo de computação, de acordo com a reivindicação 27, caracterizado pelo fato de que os módulos executáveis por computador ainda compreendem um dispositivo para adicionalmente detectar falsificação de pelo menos um armazenamento temporário de comando um dentre (A) usando duas passagens antes do consumo do pelo menos um armazenamento temporário de comando e (B) após o armazenamento temporário de comando ter sido consumido.
BRPI0205818-9A 2001-12-04 2002-12-03 Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança BRPI0205818B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US33761701P 2001-12-04 2001-12-04
US33914301P 2001-12-10 2001-12-10
US10/125,170 US7380130B2 (en) 2001-12-04 2002-04-18 Methods and systems for authentication of components in a graphics system
PCT/US2002/038827 WO2003048939A1 (en) 2001-12-04 2002-12-03 Methods and systems for cryptographically protecting secure content

Publications (2)

Publication Number Publication Date
BR0205818A BR0205818A (pt) 2004-01-06
BRPI0205818B1 true BRPI0205818B1 (pt) 2015-06-02

Family

ID=35847687

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0205818-9A BRPI0205818B1 (pt) 2001-12-04 2002-12-03 Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança

Country Status (2)

Country Link
BR (1) BRPI0205818B1 (pt)
RU (1) RU2308077C2 (pt)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AR077680A1 (es) * 2009-08-07 2011-09-14 Dolby Int Ab Autenticacion de flujos de datos
US8760459B2 (en) * 2009-12-30 2014-06-24 Intel Corporation Display data management techniques
RU2647631C1 (ru) * 2017-05-30 2018-03-16 Акционерное общество "Российская корпорация ракетно-космического приборостроения и информационных систем" (АО "Российские космические системы") Система спутниковой связи с защитой канала удаленного управления работой

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2067313C1 (ru) * 1995-03-29 1996-09-27 Акционерное общество закрытого типа "Особое конструкторское бюро систем автоматизированного проектирования" Устройство защиты от несанкционированного доступа к информации, хранимой в персональной эвм
DE69724947T2 (de) * 1997-07-31 2004-05-19 Siemens Ag Rechnersystem und Verfahren zur Sicherung einer Datei
EP0934656B1 (en) * 1997-08-26 2005-07-06 Koninklijke Philips Electronics N.V. System for transferring content information and supplemental information relating thereto
RU2154856C1 (ru) * 1999-09-02 2000-08-20 Государственное унитарное предприятие Центральный научно-исследовательский институт "Курс" Механизм взаимоаутентификации в распределенных информационно-управляющих системах реального времени
JP2003520355A (ja) * 2000-01-13 2003-07-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 原ソースから離れた後の圧縮コンテンツ保護

Also Published As

Publication number Publication date
BR0205818A (pt) 2004-01-06
RU2004110622A (ru) 2005-09-10
RU2308077C2 (ru) 2007-10-10

Similar Documents

Publication Publication Date Title
CA2434328C (en) Methods and systems for cryptographically protecting secure content
KR101030354B1 (ko) 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체
US8572403B2 (en) Digital video guard
US7353393B2 (en) Authentication receipt
US20030174842A1 (en) Managing private keys in a free seating environment
JP2010170570A (ja) 対称鍵暗号化に基づくデータの保存および検索
JP2007511810A (ja) 乱数関数を利用した実行証明
CN114844632B (zh) 数据传输方法、装置和电子设备
CN115150158A (zh) 远程身份认证方法、装置、设备及存储介质
US7739505B2 (en) Linking Diffie Hellman with HFS authentication by using a seed
KR20070122502A (ko) 디바이스 인증을 위한 하드웨어 기능 스캔을 하는 컴퓨터판독가능 매체, 방법 및 시스템
BRPI0205818B1 (pt) Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança
CN101167299A (zh) 通过使用一种子链接diffie hell man与hfs认证
CN114221784A (zh) 数据传输方法和计算机设备
HK1058409A (en) Methods and systems for authentication of components in a graphic system
KR20260021182A (ko) 디지털 저작권 보호를 위한 블록체인 기반 디지털 콘텐츠 마켓플레이스 구조
Truskovsky Protocol and architecture for the secure delivery of high-value digital content

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 11/30

Ipc: G06F 21/64 (2013.01), G06F 21/79 (2013.01)

B06A Notification to applicant to reply to the report for non-patentability or inadequacy of the application according art. 36 industrial patent law
B09A Decision: intention to grant
B16A Patent or certificate of addition of invention granted

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 02/06/2015, OBSERVADAS AS CONDICOES LEGAIS.

B25A Requested transfer of rights approved
B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 18A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2606 DE 15-12-2020 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.