BR102014003201A2 - Proteção de dados de saída contra ataques de software maliciosos - Google Patents

Proteção de dados de saída contra ataques de software maliciosos Download PDF

Info

Publication number
BR102014003201A2
BR102014003201A2 BRBR102014003201-0A BR102014003201A BR102014003201A2 BR 102014003201 A2 BR102014003201 A2 BR 102014003201A2 BR 102014003201 A BR102014003201 A BR 102014003201A BR 102014003201 A2 BR102014003201 A2 BR 102014003201A2
Authority
BR
Brazil
Prior art keywords
sprite
memory
graphics
virtual device
service layer
Prior art date
Application number
BRBR102014003201-0A
Other languages
English (en)
Inventor
Ravi L Sahita
Vinay Phegade
David J Cowperthwaite
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of BR102014003201A2 publication Critical patent/BR102014003201A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4016Transaction verification involving fraud or risk level assessment in transaction processing

Abstract

Proteção de dados de saída contra ataques de software maliciosos. A presente invenção refere-se a sistemas, aparelho, e métodos, incluindo operações para proteger dados de display de saída contra ataques de softwares maliciosos. O sistema um equipamento de display configurado para exibir dados; um ou mais processadores comunicativamente acoplados ao equipamento de display; uma ou mais memórias de armazenamento comunicativamente acoplados a um ou mais processadores; um espaço de endereço do processo incluindo um display de buifer de armazenamento; um gerenciador windows; e um sprite pipeline compreendendo uma camada de serviço de memória confiável, um dispositivo virtual sprite e uma área de memória virtual sprite associada.

Description

Relatório Descritivo da Patente de Invenção para "PROTEGEN- DO DADOS DE SAÍDA CONTRA ATAQUES DE SOFTWARE MALICIO- SOS".
ANTECEDENTES
Em várias situações, tal como nas transações financeiras online ou similares, um dispositivo computacional pode necessitar apresentar uma informação para um usuário de uma forma não compactada. Em tais situa- ções, softwares maliciosos (isto é, malware) tal como um modo kernel, root- kits de modo kernel e/ou rootkits de modo de usuário podem inserir um códi- go em uma aplicação do usuário. Esse código malicioso pode copiar chaves do servidor de processos ou memória de leitura, tal como buffers de display, e roubar as credenciais dos usuários ou outros dados.
Em algumas implementações existentes, um buffer de display pode ser protegido usando-se uma criptografia (por exemplo, criptografia de caminho de áudio e vídeo protegido - PAVP), isolamento de hardware, e/ou um display protegido através de um gerenciador de memória virtual. Entre- tanto, tais implementações podem não estar disponíveis em todas as plata- formas e, em geral, podem ser caras e/ou difíceis de implementar.
Em várias implementações computacionais, pode ser desejável proteger os dados do usuário e, em particular, os dados confidenciais do u- suário (por exemplo, nomes de usuários e senhas, informações financeiras de contas, ou similares) contra ataques de malware.
BREVE DESCRIÇÃO DOS DESENHOS O material aqui descrito está ilustrado a título exemplificativo e não para fins de limitação às figuras apresentadas nos desenhos que as a- companham. Visando simplicidade e clareza na ilustração, os elementos i- lustrados nas figuras não estão necessariamente desenhados em escala.
Por exemplo, as dimensões de alguns elementos podem ser exageradas em relação a outros elementos para fins de clareza. Ainda, onde considerado apropriado, rótulos de referência foram repetidos entre as figuras para indi- car os elementos correspondentes ou análogos. Nas figuras: FIG. 1 é um diagrama ilustrativo de um exemplo de sistema para proteger dados de display de saída; FIG. 2 é uma tabela de fluxo ilustrando um exemplo de processo para proteger dados de display de saída; FIG. 3 é um diagrama ilustrativo de um exemplo de sistema para proteger dados de display de saída em operação; FIG. 4 é uma tabela de fluxo ilustrando um exemplo de processo para a preparação de um sistema para proteger dados de display de saída; FIG. 5 é um diagrama ilustrativo de um exemplo de sistema para proteger dados de display de saída; FIG. 6 é um diagrama ilustrativo de um exemplo de sistema; e FIG. 7 é um diagrama ilustrativo de um exemplo de sistema, or- ganizado de acordo com, pelo menos, algumas implementações da presente publicação.
DESCRIÇÃO DETALHADA
Um ou mais modalidades ou implementações estão agora des- critas com referência às figuras inseridas. Enquanto modalidades e organi- zações específicas são discutidas, deve ser compreendido que isso é feito apenas para fins ilustrativos. Pessoas experientes na área reconhecerão que outras modalidades e organizações podem ser aplicadas sem terem como origem o espírito e o objetivo da descrição. Ficará aparente para os experientes na área que as técnicas e/ou organizações aqui descritas tam- bém podem ser empregadas em uma variedade de outros sistemas e apli- cações diferentes das aqui descritas.
Enquanto que a descrição a seguir apresenta várias implemen- tações que podem ser manifestadas em arquiteturas tais como as system- on-a-chip (SoC), por exemplo, a implementação das técnicas e/ou organiza- ções aqui descritas não se restringem a arquiteturas particulares e/ou siste- mas computacionais e podem ser implementadas por qualquer arquitetura e/ou sistema computacional para fins similares. Por exemplo, várias arquite- turas que utilizam, por exemplo, chips e/ou pacotes de circuitos múltiplos in- tegrados (IC), e/ou vários dispositivos computacionais e/ou dispositivos ele- trônicos de consumidor (CE) como set top boxes, smartphones, etc., podem implementar as técnicas e/ou organizações aqui descritas. Ainda, enquanto as descrições a seguir podem apresentar vários detalhes específicos tal co- mo implementações lógicas, tipos e inter-relacionamentos de componentes de sistema, opções de particionamento/integração lógica, etc., o assunto rei- vindicado pode ser praticado sem tais detalhes específicos. Em outras oca- siões, alguns materiais tais como, por exemplo, estruturas de controle e se- quências de instruções de software completo, podem não ser mostrados em detalhes para que não torne obscura o material ora publicado. O material aqui publicado pode ser implementado em hardware, firmware, software ou qualquer combinação desses. O material aqui publica- do também pode ser implementado conforme instruções guardadas em uma meio legível por máquina, que pode ser lido e executado por um ou mais processadores. Um meio legível por máquina pode incluir qualquer meio e/ou mecanismo para armazenar ou transmitir informações em um formato legível por máquina (p. ex.: um computador). Por exemplo, um meio legível por máquina pode incluir uma memória de apenas leitura (read only memory - ROM); memória de acesso aleatório (random access memory - RAM); mí- dia de armazenamento de disco magnético; mídia de armazenamento ópti- co; dispositivos de memória flash; elétrico, óptico, acústico ou outras formas de propagação de sinais (por exemplo, carregador de ondas, sinais infra- vermelho, sinais digitais, etc.), e outros.
Referências na especificação para "uma implementação", "im- plementação", "um exemplo de implementação", etc. indicam que a imple- mentação descrita pode incluir um atributo particular, estrutura, ou caracte- rística, mas cada implementação pode não necessariamente incluir o atribu- to em particular, estrutura ou característica. Além do mais, tais frases não se referem necessariamente à mesma implementação. Mais, quando um atribu- to em particular, ou característica é descrita em conexão com uma imple- mentação, subentende-se que ela é de conhecimento das pessoas experien- tes na área de efetivar tal atributo, estrutura ou característica em conexão com outras implementações, estejam ou não explicitamente aqui descritas.
Sistemas, aparelhos, artigos e métodos são descritos abaixo in- cluindo operações para proteger o display de saída de dados contra ataques de softwares maliciosos.
Conforme descrito acima, em vários ambientes computacionais, o malware pode inserir um código em uma aplicação de usuário que pode copiar as chaves do servidor de processos ou memória de leitura, tal como buffers de display, e roubar as credenciais dos usuários ou outra informação.
Conforme descrito em maiores detalhes abaixo, dados do usuá- rio tal como, por exemplo, dados de display de armazenamento (por exem- plo, dados de display) podem ser protegidos contra ataques de malware. Em geral, uma camada de serviço de memória confiável (TMSL) em uma plata- forma computacional pode ser um componente do modo raiz de uma exten- são de máquina virtual (VMX) e pode fornecer vários serviços. Por exemplo, o TMSL pode fornecer vistas de memórias físicas que são acessadas ape- nas por softwares aprovados (ou seja, softwares conhecidos por serem vali- dados e confiáveis). Tais vistas de memórias físicas podem ser usados para proteger dados em uma memória inacessível a softwares não aprovados. No contexto da proteção de um display de armazenamento contra malware, por exemplo, um display de armazenamento isolado pode ser gerado ou marca- do, o qual pode apenas ser acessado por um software ou código aprovado ou confiável. O TMSL pode similarmente fornecer uma parte de um espaço de memória gráfica (isto é, uma região de memória gráfica de acesso contro- lado) que pode apenas ser acessado por softwares ou códigos aprovados ou confiáveis.
Mais, o TMSL pode ser capaz de gerar ou emular um dispositivo tal como, por exemplo, um dispositivo Conexão Componente Periférica (Pe- ripheral Component Interconnect - PCI) ou Conexão Componente Periférica Expressa (Peripheral Component Interconnect Express - PCIe). Nesse con- texto, o TMSL pode fornecer um dispositivo de virtual sprite e uma região de memória virtual sprite associada. O dispositivo virtual sprite pode ser imple- mentado através de uma máquina sprite de um processador gráfico, por e- xemplo, e pode fornecer um sprite, uma imagem que pode cobrir camadas de buffers. Nesse contexto, o sprite pode fornecer uma imagem que copia ou emula uma apresentação para um usuário (isto é, uma apresentação que o usuário teria visto através de um pipeline gráfico padrão) de tal forma que o usuário não percebe mudanças na informação que lhe é apresentada. En- tretanto, como usado aqui, o sprite pode apresentar a mesma informação ao usuário através de um pipeline gráfico separado e seguro (isto é, um pipeline sprite). Em geral, os dados a serem apresentados ao usuário podem ser da- dos confidenciais. Os dados confidenciais podem ser recebidos em um dis- positivo ou sistema ou gerados internamente através do dispositivo ou sis- tema. Por exemplo, o dado pode incluir dados financeiros recebidos através de uma rede tal como a Internet. Ou, por exemplo, o dado pode ser um dado teclado (recebido através de um teclado ou teclado virtual, ou similar) rece- bido em um dispositivo ou mostrado ao usuário, tal como o nome do usuário, senha ou o número do cartão de crédito, ou similar.
Para fins ilustrativos, em uma operação não protegida, um pipe- line gráfico pode fornecer dados de display ao dispositivo de display. Por e- xemplo, um buffer de display pode ser acessado por, por exemplo, uma in- terface de programa de aplicação (API) para fornecer o dado no display do buffer para um gerenciador Windows. O gerenciador Windows pode opcio- nalmente escrever o dado e fornecê-lo ao driver gráfico (que pode incluir uma tabela de tradução gráfica - GTT) para traduzir endereços virtuais em endereços físicos), que pode fornecer o dado (através de uma memória físi- ca) para um dispositivo gráfico, tal como um dispositivo de display. Como será compreendido, tais operações podem ser expostas a um ataque de malware.
Como descrito em mais detalhes abaixo, nas implementações discutidas, um local armazenador de display de armazenamento (que pode conter dados não confidenciais, dados falsos, ou similares) pode fornecer dados através do discutido pipeline de forma que qualquer ataque de malwa- re apenas encontrará dados não valiosos, não confidenciais guardados no local armazenador de display de armazenamento. Para mostrar o (potenci- almente sensível) dado ao usuário, um pipeline gráfico alternativo (isto é, um pipeline sprite) pode ser utilizado. O pipeline alternativo pode permitir acesso apenas aos softwares ou códigos autorizados ou confiáveis. Por exemplo, em resposta ao recebimento de dados confidenciais no dito display de ar- mazenamento isolado (ou outro evento que inicie as técnicas protetivas des- critas), os dados mantidos no display de armazenamento podem ser forneci- dos ao gerente de Windows quando da requisição do API. Mais, dados confi- denciais mantidos em um display de armazenamento isolado podem ser transferidos, através de um dispositivo de sprite virtual para uma área de memória de sprite virtual. Como discutido, o dispositivo de sprite virtual e a área de memória de sprite virtual podem ser entendidos como seguros em face de serem registrados pelo TMSL. Os dados confidenciais podem então serem transferidos para a discutida área de memória de gráficos de acesso controlado do espaço de memórias gráficas. Também conforme discutido, a área de memória de gráficos de acesso controlado pode ser entendida como segura em face de ter uma vista de memória confiável gerada pelo TMSL.
Os dados seguros podem ser transferidos para um dispositivo de gráficos, tal como um dispositivo de display, para serem vistos pelo usuário. Confor- me apreciaremos, usando as técnicas descritas, qualquer ataque de malwa- re poderá apenas conseguir dados não confidenciais e os dados confidenci- ais podem ser desviados dos canais gráficos para um pipeline seguro de gráficos. Tais implementações podem fornecer segurança para os dados do display. FIG. 1 é um diagrama ilustrativo de um exemplo de sistema 100 para proteger dados de display de saída, organizado de acordo com pelo menos algumas das implementações da presente publicação. Como mos- trado, o sistema 100 pode incluir um endereço de processo de espaço 102, um gerenciador de Windows 110, interfaces de programação de aplicação (APIs) 114, um driver de gráficos 120 implementando uma tabela de tradu- ção de gráficos (GTT) 122, um espaço de memória de gráficos 130, e uma camada de serviço de memória confiável (TMSL) 140. O sistema 100 tam- bém pode incluir um dispositivo de display 170. Em várias implementações, o sistema 100 pode ser configurado para fornecer segurança aos dados do usuário. Conforme discutido adiante, o sistema 100 pode ser aplicado atra- vés de diversas implementações de hardware, firmware e software.
Em alguns exemplos, o sistema 100 pode incluir itens adicionais que não foram mostrados na FIG. 1 por questões de clareza. Por exemplo, o sistema 100 pode incluir uma ou mais unidades de processamento central, um transceptor do tipo radiofrequência (RF), um display, uma antena, um sistema operacional, um processador gráfico ou similar. Mais, o sistema 100 pode incluir itens adicionais tal como uma caixa de som, um microfone, um acelerômetro, memória, um roteador, rede de interface lógica, etc. que não foram mostrados na FIG. 1 por questões de clareza.
Como discutido, o sistema 100 pode fornecer segurança aos da- dos do usuário. Como mostrado, o sistema 100 pode incluir o TMSL 140, que pode ser implementado através de uma ou mais unidade de processa- mento central do sistema 100. Conforme discutido, o TMSL 140 pode ser configurado para fornecer vistas da memória física apenas acessíveis atra- vés de softwares autorizados (ou seja, software conhecido por ser validado ou confiável), programas ou dispositivos virtuais, ou similares. Em alguns exemplos, o TMSL 140 pode ser uma extensão de máquina virtual (VMX) de componente de modo raiz. Em alguns exemplos, o TMSL 140 pode ser ope- rado no modo raiz-VMX e usar hardware de Tabela de Página Estendida pa- ra isolar a memória física do display isolado buffer 106, controlar o acesso ao GTT 122, controlar o acesso à área de memória virtual sprite 160, e/ou controlar o acesso ao espaço de memória gráfica 130. Em tais exemplos, o TMSL 140 pode usar tecnologia de virtualização de Tabela de Página Es- tendida para o gerenciamento de memória, incluindo o controle de acesso de memória e isolamento. O TMSL 140 pode ser configurado para compar- timentalizar um espaço de endereço virtual kernel ou um espaço de endere- ço de processo virtual em vistas de memória física separada. Tais separa- ções podem permitir que as vistas de memórias físicas estejam acessíveis apenas para softwares ou códigos autorizados ou confiáveis (ou seja, me- mória isolada ou memória de acesso controlado). Outras áreas não protegi- das de memória podem ser acessadas por qualquer código, que pode ser autorizado ou confiável ou desconhecido (e potencialmente malware, por exemplo), Como mostrado na FIG. 1, o TMSL 140 pode fornecer para dis- play de armazenamento isolado 106, que pode ser acessado apenas através de vista de memória física por um programa registrado (por exemplo, softwa- re, dispositivos virtuais, ou similares), por exemplo. O display de armazena- mento isolado 106 pode ser uma parte do espaço de processo de endere- çamento 102, por exemplo, e pode ser marcado como isolado através de uma vista de memória física descrita por um TMSL 140. A vista de memória física associada com o display de armazenamento isolado 106 pode ser descrita como uma vista de memória confiável de um display de armazena- mento isolado, por exemplo. Mais, o sistema 100 pode incluir display de buf- fer 104 de armazenamento como uma parte do processo de endereçamento espaço 102, que pode não estar protegido por uma vista de memória física.
Mais, como mostrado, o TMSL 140 pode prevenir a região de acesso controlado 132 de espaço de memória gráfica 130. A região de a- cesso controlado 132 pode se acessada apenas através de uma vista de memória física por um programa registrado conforme gerenciado pelo TMSL 140, por exemplo. A vista de memória física associada com a região de a- cesso controlado 132 pode ser descrita como uma área de acesso controla- do confiável de vista de memória, por exemplo. Conforme mostrado, driver de gráficos 120 pode incluir uma tabela de tradução de gráficos (GTT) 122. GTT 122 pode fornecer endereços de memória virtual de tradução para en- dereços de memória física tal como, por exemplo, endereços virtuais de ker- nel de tradução para endereços físicos. Em alguns exemplos, dispositivo vir- tual sprite 150 (e o sistema operacional e/ou outros dispositivos de sistema 100) pode acessar e/ou controlar áreas de espaço de memória gráfica 130 através do GTT 122. No contexto do display de segurança de saída aqui discutido, o TMSL 140 pode implementar uma vista de memória física para limitar quais dispositivos e/ou sistema operacional pode ter acesso ao GTT para escrever para o espaço de memória gráfica 130. Em alguns exemplos, marcar uma parte do espaço de memória gráfica 130 como área de memória gráfica de acesso controlado 132 pode incluir acessar o GTT 122 através de vista de memória física implementada através de TMSL140, Em alguns e- xemplos, o espaço de memória gráfica 130 e a área de memória virtual spri- te 160 pode ser implementados enquanto uma memória mapeada de entra- da/saída (MMIO) de espaços de memória. Por exemplo, área de memória virtual sprite 160 pode ser uma cópia 1:1 ou remapeamento de espaço de memória gráfica 130. Em alguns exemplos, as implementações discutidas podem incluir desabilitar um dispositivo blitter (BLT) e permitir o monitora- mento do GTT 122 através do sistema operacional do sistema 100. Após a conclusão da apresentação segura do dado de display, o monitoramento do GTT 122 pode ser desabilitado e o dispositivo de blitter pode ser ativado.
Mais, com conclusão da apresentação segura do dado de display, a área de acesso controlado 132 e/ou display de armazenamento isolado 106 pode ser desabilitado e retornado ao uso geral pelo sistema 100.
Deve ser notado que o TMSL 140 pode fornecer vistas de me- mória física individuais com propriedades iguais ou diferentes tais como, por exemplo, listas de programas ou dispositivos virtuais que podem acessar as vistas de memória físicas individual. No contexto de proteção de display de armazenamento individual 106 e da área de acesso controlado 132, as vis- tas de memória física podem, cada, permitir acesso através de dispositivo virtual sprite 150 e área de memória virtual sprite 160 entretanto, eles podem permitir acesso a outros programas diferentes (caso haja) se necessário.
Também conforme discutido, o TMSL 140 pode ser configurado para gerar ou emular um dispositivo. Por exemplo, TMSL 140 pode prevenir dispositivo virtual sprite 150 e área de dispositivo de memória virtual sprite 160. Mais, diversos componentes do sistema 100 podem precisar serem car- regados ou configurados antes de proteger os dados confidenciais 108, por exemplo. Para configurar e/ou carregar diversos componentes do sistema 100, o TMSL 140 pode ser carregado usando-se qualquer técnica cabível tal como, por exemplo, durante o carregamento do sistema 100 ou com a aber- tura de uma plataforma de aplicação segura ou similar. O TMSL 140 pode expor um (adicionalmente) driver de dispositivo virtual sprite não verificado (isto é, um software que opera um dispositivo virtual sprite). O driver de dis- positivo virtual sprite pode ser carregado através de um sistema operacional, Com o carregamento com sucesso do driver de dispositivo virtual sprite, TMSL 140 pode determinar se um driver de dispositivo virtual sprite não veri- ficado está incluso em uma lista autorizada provida (isto é, que o driver de dispositivo sprite esteja na lista autorizada). Se o driver de dispositivo virtual sprite não verificado está na lista autorizada, o dispositivo virtual sprite pode ser registrado pelo TMSL 140, permitido a operar, fornecer espaço de me- mória virtual associada, e/ou ter acesso a diversas vistas de memória física, por exemplo, Em outras implementações, TMSL pode carregar apenas ex- por um driver de dispositivo virtual sprite conhecido ou marcado como auto- rizado.
Como discutido, em algumas implementações, o dispositivo vir- tual sprite 150 pode ser exposto e/ou emulado como um dispositivo virtual PCI ou PCIe. Em tais implementações, o dispositivo virtual sprite 150 pode necessitar se enumerado por um sistema operacional como um dispositivo PCI ou PCIe. Em alguns exemplos, TMSL 140 pode ser carregado e um dis- positivo virtual sprite não verificado pode ser exposto antes do sistema ope- racional enumerar os dispositivos PCI ou PCIe. Em outros exemplos, TMSL140 pode ser carregado após o sistema operacional ter enumerado os dispositivos PCI ou PCIe, e o dispositivo virtual sprite não verificado pode ser exposto como um dispositivo hot-plug que invoca um gerenciado de sis- tema operacional para pesquisar novamente um barramento PCI ou PCIe.
Retornando à discussão do dispositivo virtual sprite 150 e dispo- sitivo de memória sprite virtual área 160, dispositivo virtual sprite 150 e dis- positivo de memória virtual sprite área 160 pode ter acesso ao display de armazenamento isolado 106 e acesso à área controlada 132. O dispositivo virtual sprite 150 pode ser implementado através de um dispositivo sprite de um processador gráfico, por exemplo, e pode fornecer um sprite, uma ima- gem que pode cobrir a estrutura dos buffers. Conforme discutido, um sprite pode fornecer uma imagem que copia ou emula uma apresentação para o usuário e pode ser usado, pode apresentar o mesmo dado para o usuário através de um pipeline gráfico separado e seguro (isto é, um pipeline sprite).
Conforme mostrado na FIG. 1, os dados a serem apresentados ao usuário podem ser os dados confidenciais 108. Em geral, dados confidenciais 108 podem incluir qualquer dado que necessite de ser protegido de um malware tal como, por exemplo, nomes de usuários e senhas, informações financei- ras de contas, ou similares. Os dados confidenciais pode ser recebidos em um sistema 100 ou gerados internamente através do sistema 100. Por e- xemplo, os dados confidenciais 108 podem incluir dados financeiros recebi- dos através de uma rede como a Internet. Ou, por exemplo, os dados confi- denciais 108 podem ser dados teclados (recebido via teclado ou teclado vir- tual, ou similar) recebidos em um dispositivo e mostrados ao usuário tal co- mo um nome de usuário, senha, número de cartão de crédito, ou similar. O processo de proteção de dados confidenciais 108 pode ser in- vocado em resposta aos dados confidenciais 108 serem recebidos em um display de armazenamento isolado 106 ou em resposta a outro evento inici- ador. O uso de display de armazenamento isolado 106 pode ser iniciado por qualquer evento adequado tal como, por exemplo, a identificação de dados vindo de um processo protegido sendo associado a um ambiente de hardwa- re protegido ou um processo protegido de registro para proteção com TMSL 140. Em geral, um processo (por exemplo, um programa de software) asso- ciado aos dados confidenciais 108 pode ser previamente registrado pelo TMSL 140 como um processo protegido (por exemplo, confiável). Tal regis- tro pode incluir a determinação, através de TMSL 140, de que o processo é um processo autorizado ou outra técnica de verificação. O processo protegi- do pode incluir qualquer processo adequado tal como, por exemplo, um pro- cesso de modo de usuário, um processo relacionado a transações financei- ras, uma transação financeira online, outra transação online, ou similar.
Em resposta à recepção de dados confidenciais 108 em um dis- play de armazenamento isolado 106, um ou mais APIs 114 podem ser exe- cutados em ou através de um gerenciador Windows 110 para receber a in- formação tal como, por exemplo, coordenar ou outra informação gráfica, as- sociada ao local do display do buffer 104 associado com o processo de pro- teção. Conforme discutido, tal(ais) operação(ões) pode(m) ser típicas em fornecer dados de um display do buffer para um pipeline gráfico para mos- trar ao usuário. Conforme discutido, nas técnicas descritas, o local de dis- play do buffer 104 pode incluir apenas dados não confidenciais, ou até da- dos falsos, ou similares de forma que qualquer malware que ataque os da- dos não receberão dados confidenciais 108, por exemplo, de forma que os dados confidenciais 108 estarão protegidos. Mais, conforme discutido, para mostrar os dados confidenciais 108 ao usuário através de um dispositivo de display 170, um pipeline gráfico separado pode ser utilizado. Em geral, APIs 114 podem incluir qualquer APIs tal como, por exemplo, DirectX APIs dispo- nível para o Microsoft Windows.
Os dados confidenciais 108 em um display de buffer isolado 106 podem ser transferidos para um área de memória virtual sprite 160, através de um dispositivo virtual sprite 150, por exemplo. Como discutido, um dispo- sitivo virtual sprite 150 pode ser um programa confiável e autorizado, de forma que há pouco ou nenhum risco de que o acesso ao display de arma- zenamento isolado 106 esteja sendo conduzido por um malware. Os dados confidenciais 108 em uma área de memória virtual sprite 160 podem ser transferidos para uma área de acesso controlado 132 através de um disposi- tivo virtual sprite 150, por exemplo. Em outros exemplos, dados confidenci- ais 108 podem ser transferidos para uma área de acesso controlado 132 a- través do TMSL 140. Em ambos os eventos, os dados confidenciais 108 po- dem ser fornecidos para espaços de memória 130 através de um pipeline gráfico protegido (por exemplo, um pipeline sprite).
Os dados confidenciais 108 podem ser transferidos ou forneci- dos para um dispositivo de display 170 através de qualquer técnica adequa- da da área de acesso controlado 132 de espaço de memória gráfica 130 pa- ra mostrar como um display de dados confidenciais 180. Em geral, dispositi- vo de display 170 pode incluir qualquer dispositivo de display tal como, por exemplo, um monitor, seja integrado com o sistema 100 ou fornecido sepa- radamente e comunicativamente em dupla (por exemplo, via conexão a cabo ou sem fio) com outros componentes do sistema 100 para receber dados confidenciais 108 para exposição.
Como discutido, algumas implementações podem incluir a desa- bilitação de um dispositivo de blitter (BLT) e fornecer o monitoramento do GTT 122 através de um sistema operacional do sistema 100. Após a conclu- são da apresentação segura do dado de display, o monitoramento do GTT 122 pode ser desabilitado e o dispositivo de blitter pode ser ativado. Mais, com conclusão da apresentação segura do dado de display, a área de aces- so controlado 132 e/ou display de armazenamento isolado 106 pode ser de- sabilitado e retornado ao uso geral pelo sistema 100.
Em geral, as operações discutidas em relação à FIG. 1 e em ou- tros pontos deste, podem proteger dados de saída de exibição. Mais, con- forme discutido, apesar de qualquer malware presente no sistema 100 poder acessar o display de armazenamento 104, ele pode não acessar o display de armazenamento isolado 106.
Como será discutido em mais detalhes adiante, o sistema 100 ou outro sistema aqui discutido pode ser usado para realizar algumas ou to- das as diversas funções discutidas abaixo em conexão com as FIGS. 2-4, ou as operações anteriormente discutidas em relação à FIG. 1. FIG. 2 é uma tabela de fluxo ilustrando um exemplo de processo 200 para proteger dados de display de saída, organizado de acordo com pe- lo menos algumas das implementações da presente publicação. Na imple- mentação ilustrada, processo 200 pode incluir uma ou mais operações, fun- ções ou ações conforme ilustrado por um ou mais dos blocos 202, 204, 206, 208, 210, 212, 214 e/ou 216. Não sendo um exemplo limitador, o processo 200 será aqui descrito em relação ao exemplo de sistema 100 da FIG. 1. O processo 200 pode ser utilizado como um método de imple- mentação computacional para proteger dados de exibição de saída. Proces- so 200 pode começar no bloco 202, "REGISTRAR UM PROCESSO COMO
UM PROCESSO PROTEGIDO ATRAVÉS DE UMA CAMADA DE SERVIÇO DE MEMÓRIA CONFIÁVEL", onde um processo pode ser registrado, atra- vés de uma camada de serviços de memória confiável, como um processo protegido. Registrar um processo pode incluir a determinação de se um pro- cesso é um processo autorizado, por exemplo. O processo protegido pode incluir qualquer processo adequado tal como, por exemplo, um processo re- lacionado com uma transação financeira, uma transação financeira online, outra transação online, ou similar. O processamento pode seguir da operação 202 para a operação 204, "MARCAR UMA PARTE DO ESPAÇO DE PROCESSAMENTO DE
ENDEREÇO COMO UM display de armazenamento ISOLADO E OUTRA
PORÇÃO DO ESPAÇO DE ENDEREÇAMENTO DE PROCESSO COMO UM BUFFER DE ARMAZENAMENTO", onde parte do espaço de endereça- mento de processo pode ser marcado como um display de armazenamento isolado e outra parte do espaço de endereçamento de processo pode ser marcado como um buffer de armazenamento. O buffer de display isolado pode ser protegido e apenas acessado através de uma vista de memória confiável gerenciado através de uma camada de serviço de memória confiá- vel, por exemplo. O buffer de armazenamento pode ser desprotegido (por exemplo, aberto para o sistema operacional, diversos programas e proces- sos, e potencialmente, malware), por exemplo. O processamento pode seguir da operação 204 para a operação 206, "MARCAR UMA PARTE DO ESPAÇO DE MEMÓRIA GRÁFICA COMO UMA ÁREA DE MEMÓRIA GRÁFICA DE ACESSO CONTROLADO", onde parte do espaço memória gráfica pode ser marcado como uma área de me- mórias gráficas de acesso controlado. A área de memórias gráficas de aces- so controlado pode ser protegida e apenas acessada por uma vista de me- mória confiável gerenciada por uma camada de serviço de memória confiá- vel, por exemplo. O processamento pode seguir da operação 206 para a operação 208, "FORNECER UM dispositivo VIRTUAL SPRITE E UMA ÁREA DE ME- MÓRIA VIRTUAL SPRITE", onde um dispositivo virtual sprite e uma área de memória dispositivo virtual sprite pode ser fornecido. O dispositivo virtual s- prite pode ser registrado e fornecido através de uma camada de serviço de memória confiável, por exemplo. O dispositivo virtual sprite pode acessar o display de armazenamento isolado e/ou a área de memórias gráficas de a- cesso controlado, por exemplo. A área de memória virtual sprite associada pode ser uma memória mapeada de espaço de memória de saída/entrada (MMIO) e pode ter uma correspondência ou mapeamento 1:1 à área de memórias gráficas de acesso controlado, por exemplo. O processamento pode seguir da operação 208 para a operação 210, "INVOCAR UMA INTERFACE DE PROGRAMAÇÃO DE APLICAÇÃO ATRAVÉS DE UM GERENCIADOR WINDOWS PARA RECEBER INFOR- MAÇÃO ASSOCIADA COM O BUFFER DE ARMAZENAMENTO", onde uma ou mais interfaces de programação de aplicação (APIs) podem invocar atra- vés de um gerenciador Windows para receber a informação associada com o buffer de armazenamento. A informação associada com o buffer de armaze- namento pode incluir coordenadas ou outra informação gráfica, por exemplo.
Na situação em que o ataque de um malware esteja em progresso, o malwa- re pode atacar os dados mantidos no buffer de armazenamento, que pode incluir apenas dados não confidenciais, ou até dados falsos, ou similares. O processamento pode seguir da operação 210 para a operação 212, "TRANSFERIR OS DADOS CONFIDENCIAIS EM UM DISPLAY DE BUFFER ISOLADO PARA A ÁREA DE MEMÓRIA DE DISPOSITIVO VIR- TUAL SPRITE", onde os dados confidenciais em um display de buffer isola- do podem ser transferidos para uma área de memória de dispositivo virtual sprite. O buffer de display isolado pode ser protegido ao longo de um pipeli- ne gráfico sprite para proteger a apresentação para um usuário, por exem- plo. O processamento pode seguir da operação 212 para a operação 214, "TRANSFERIR OS DADOS CONFIDENCIAIS EM UMA ÁREA DE ME- MÓRIA DE DISPOSITIVO VIRTUAL SPRITE PARA A ÁREA DE MEMÓRIA DE GRÁFICOS DE ACESSO CONTROLADO", onde os dados confidenciais em uma área de memória de dispositivo virtual sprite podem ser transferidos para a área de memória de gráficos de acesso controlado. Os dados confi- denciais podem ser transferidos para o dispositivo virtual sprite e/ou a área de memória de dispositivo virtual sprite, por exemplo. O processamento pode seguir da operação 214 para a operação 216, "FORNECER OS DADOS CONFIDENCIAIS NA ÁREA DE MEMÓRIA
DE GRÁFICOS DE ACESSO CONTROLADO PARA UM DISPOSITIVO DE DISPLAY", onde os dados confidenciais em uma área de memória de gráfi- cos de acesso controlado podem ser transferidos para um dispositivo de display. Os dados confidenciais podem ser apresentados ao usuário, por e- xemplo. Conforme discutido, o usuário pode ver uma exibição dos dados confidenciais sem presenciar qualquer diferença entre a imagem dos dados confidenciais apresentada pelo pipeline sprite e a imagem que o usuário ve- ria se um pipeline gráfico padrão fosse usado para apresentar os dados ao usuário.
Alguns detalhes adicionais e/ou alternativos relacionados ao processo 200 podem ser ilustrados em um ou mais exemplos de implemen- tações discutidas em mais detalhes abaixo em relação às FIGS. 3 e/ou 4. FIG. 3 é um diagrama ilustrativo de um exemplo de sistema 100 e processo 300 em operação, organizado de acordo com pelo menos algu- mas implementações da presente publicação. Na implementação ilustrada, processo 300 pode incluir um ou mais operações, funções ou ações confor- me ilustrado por uma ou mais ações 312, 314, 316, 321, 322, 323, 324, 325 e/ou 326. Não sendo um exemplo limitador, o processo 300 será aqui descri- to em relação ao exemplo de sistema 100 da FIG. 1.
Na implementação ilustrada, sistema 100 pode incluir os módu- los 302, similar, e/ou suas combinações. Por exemplo, módulos 302, podem incluir gerenciador Windows 110, espaço de processamento de endereça- mento 102 e pipeline sprite 310, similar, e/ou suas combinações. Gerencia- dor Windows 110 podem ser configurados para receber informações associ- adas com o buffer de armazenamento 104. Como discutido, a informação associada com o buffer de armazenamento 104 pode incluir dados não sen- síveis ou falsos ou similares. Espaço de processamento de endereçamento 102 pode ser configurado para incluir display de armazenamento isolado 106 para tratar dados confidenciais 108 e display de armazenamento 104, por exemplo. O pipeline sprite 310 pode incluir o dispositivo virtual sprite 150, área de memória virtual sprite 160, área de acesso controlado 132, camada de serviço de memória confiável, ou respetivas combinações. O pipeline s- prite pode também incluir a tabela de tradução gráfica 140 implementada via driver gráfico 120 e o espaço de memória gráfica 130, por exemplo. O pipe- line sprite 310 pode ser configurado para transferir dados confidenciais 108 do buffer de memória isolada 106 para a área de memória virtual sprite 160 e posteriormente para a área de acesso controlado 132 por um caminho pro- tegido de potenciais ataques de malware. O pipeline sprite pode transferir dados confidenciais para o dispositivo de display 170 para exibir ao usuário conforme o display de dados confidenciais 180. Apesar do sistema 100, co- mo mostrado na FIG. 3, poder incluir um conjunto particular de blocos e a- ções associadas a módulos particulares, esses blocos ou ações podem ser associadas a diferentes módulos do que ao módulo particular aqui ilustrado.
Processo 300 pode ser utilizado como um método de implemen- tação computacional para predição residual de camadas e canais cruzados.
Processo 300 pode começar no bloco 312, "MARCAR BUFFER DE DIS- PLAY ISOLADO E BUFFER DE ARMAZENAMENTO", onde uma parte da área de endereçamento de processamento 102 pode ser marcada como um display de armazenamento isolado 106 e outra parte da área de endereça- mento de processamento 102 pode ser marcada como buffer de armazena- mento 104. O buffer de display isolado 106 pode ser protegido e apenas a- cessado por uma vista de memória confiável gerenciada por uma camada de serviço de memória confiável (TMSL) 140, por exemplo. O buffer de arma- zenamento pode ser desprotegido (por exemplo, aberto para o sistema ope- racional, diversos programas e processos, e potencial mente, malware), por exemplo. O processamento pode seguir da operação 312 para a operação 321, "REGISTRAR UM PROCESSO COMO UM PROCESSO PROTEGI- DO", onde um processo pode ser registrado, através do TMSL 140, como um processo protegido. Registrar um processo pode incluir a determinação, através de uma lista predeterminada de autorizados gerenciada por um TMSL 140, de se um processo é um processo autorizado, por exemplo. O processo protegido pode incluir qualquer processo adequado tal como, por exemplo, um processo relacionado com uma transação financeira, uma tran- sação financeira online, outra transação online, ou similar. O processamento pode seguir da operação 321 para a operação 322, "MARCAR MEMÓRIA GRÁFICA DE ACESSO CONTROLADO", onde uma parte do espaço de memória gráfica 130 poderia ser marcada como á- rea de memória gráfica de acesso controlado 132. Área de memória gráfica de acesso controlado 132 pode ser controlada e apenas acessada por uma vista de memória confiável gerenciada pelo TMSL 140, por exemplo. O processamento pode seguir da operação 322 para a operação 323, "FORNECER DISPOSITIVO VIRTUAL SPRITE E ÁREA DE MEMÓ- RIA", onde dispositivo virtual sprite 150 e área de memória virtual sprite as- sociada 160 podem ser fornecidos. O dispositivo virtual sprite 150 pode ser registrado e fornecido através do TMSL 140, por exemplo. O dispositivo vir- tual sprite 150 pode acessar o display de buffer isolado 106 e/ou a área de acesso controlado 132, por exemplo. Área de memória virtual sprite associ- ada 160 pode ser uma memória mapeada de espaço de memória de saí- da/entrada (MMIO) e pode ter uma correspondência ou mapeamento 1:1 pa- ra a área de memória gráfica de acesso controlado 132, por exemplo. O processamento pode seguir da operação 323 para a operação 324, "TRANSFERIR DADOS CONFIDENCIAIS PARA ÁREA DE MEMÓRIA VIRTUAL SPRITE", onde os dados confidenciais 108 em um display de buf- fer isolado 106 podem ser transferidos para uma área de memória virtual s- prite associada 160. Display de buffer isolado 106 pode ser protegido ao longo do pipeline sprite 310 para proteger a apresentação ao usuário, por exemplo. O processamento pode seguir da operação 324 para a operação 325, "TRANSFERIR DADOS CONFIDENCIAIS PARA MEMÓRIA GRÁFICA DE ACESSO CONTROLADO", onde os dados confidenciais 108 em uma área de memória virtual sprite 160 podem ser transferidos para uma área de acesso controlado 132. Os dados confidenciais 108 podem ser transferidos por um dispositivo virtual sprite 150 e/ou por uma área de memória virtual sprite 160, por exemplo. O processamento pode seguir da operação 325 para a operação 326, "FORNECER DADOS CONFIDENCIAIS PARA DISPOSITIVO DE DIS- PLAY", onde os dados confidenciais 108 na área de acesso controlado 132 podem ser transferidos para o dispositivo de display 170. Os dados confi- denciais 108 podem ser exibidos ao usuário, por exemplo, como exibição de dados confidenciais 180. Conforme discutido, o usuário pode ver a exibição dos dados confidenciais 180 sem testemunhar nenhuma diferença entre a exibição dos dados confidenciais 180 apresentados através do pipeline spri- te 310 e uma exibição dos dados que o usuário veria se um pipeline gráfico padrão tivesse sido usado para apresentar os dados ao usuário. FIG. 4 é uma tabela de fluxo ilustrando um exemplo de processo 400 para a preparação de um sistema para proteger a exibição de dados de saída, organizado de acordo com pelo menos algumas das implementações da presente publicação. Na implementação ilustrada, processo 400 pode in- cluir um ou mais operações, funções ou ações conforme ilustrado por um ou mais dos blocos 402, 404, 406, 408, e/ou 410. Não sendo um exemplo limi- tador, o processo 400 será aqui descrito em relação ao exemplo de sistema 100. O processo 400 pode ser utilizado como um método de imple- mentação computacional para proteger dados de exibição de saída. Proces- so 400 pode começar no bloco 402, "CARREGAR UMA CAMADA DE SER- VIÇO DE MEMÓRIA CONFIÁVEL", onde a camada de serviço de memória confiável (TMSL) 140 pode ser carregado. TMSL 140 pode ser carregado durante uma inicialização do sistema 100 ou após a abertura de uma plata- forma de aplicação segura ou similar, por exemplo. TMSL 140 pode incluir um componente de modo raiz de extensão de máquina virtual. O processamento pode seguir da operação 402 para a operação 404, "EXPOR, ATRAVÉS DE CAMADA DE SERVIÇO DE MEMÓRIA CON- FIÁVEL, UM DISPOSITIVO VIRTUAL SPRITE NÃO VERIFICADO", onde um dispositivo virtual sprite não verificado pode ser exposto através ou por um TMSL 140. O dispositivo sprite não verificado pode ser exposto pelo TMSL 140 de qualquer forma adequada. Por exemplo, TMSL pode ser con- figurado por uma porta de acesso emulada e/ou capturar para permitir cus- tomização sadia do PCI ou PCIe e tal capacidade pode ser utilizada para expor o dispositivo sprite não verificado. O processamento pode seguir da operação 404 para a operação 406, "CARREGAR UM DRIVER DE DISPOSITIVO VIRTUAL SPRITE NÃO
VERIFICADO ASSOCIADO COM UM DISPOSITIVO VIRTUAL SPRITE NÃO VERIFICADO", onde um driver de dispositivo virtual sprite não verifica- do associado a um dispositivo virtual sprite não verificado podem ser carre- gados. O driver de dispositivo virtual sprite não verificado pode ser carrega- do usando qualquer técnica adequada tal como, por exemplo, carregando o driver de dispositivo virtual sprite não verifica através de um sistema opera- cional de sistema 100. O processamento pode seguir da operação 406 para a operação 408, "DETERMINAR, ATRAVÉS DE UMA CAMADA DE SERVIÇO DE ME- MÓRIA CONFIÁVEL, SE O DRIVER DE DISPOSITIVO VIRTUAL SPRITE
NÃO VERIFICADO ESTÁ INCLUÍDO EM UMA LISTA DE AUTORIZADOS FORNECIDA", onde pode ser determinado, através de TMSL 140, se o dri- ver de dispositivo virtual sprite não verificado está incluído em uma lista de autorizados fornecida. Conforme discutido, TMSL 140 pode utilizar uma lista de programas e/ou códigos confiáveis e/ou seguros. TMSL 140 pode deter- minar se o driver de dispositivo virtual sprite não verificado pode ser incluído na lista de autorizados. Conforme discutido, se o driver de dispositivo virtual sprite não verificado estiver incluído na lista de autorizados, o driver de dis- positivo virtual sprite não verificado pode ser considerado seguro. Se não estiver na lista de autorizado, o driver de dispositivo virtual sprite não verifi- cado pode ser considerado desconhecido e pode não ser autorizado o regis- tro, carregamento, operacionalização, ou similar. O processamento pode seguir da operação 408 para a operação 410, SE O DRIVER DE DISPOSITIVO VIRTUAL SPRITE NÃO VERIFICA- DO ESTIVER INCLUÍDO NA LISTA DE AUTORIZADOS FORNECIDA, RE- GISTRAR O DISPOSITIVO VIRTUAL SPRITE NÃO VERIFICADO", onde, se o driver de dispositivo virtual sprite não verificado for considerado incluído na lista de autorizados fornecida, o dispositivo virtual sprite pode ser registrado pelo TMSL 140, ser permitida a operar, fornecer espaço de memória virtual associada, e/ou ter acesso a diversas vistas de memória física, por exemplo.
Usando tais técnicas, um pipeline sprite seguro pode ser organi- zada ou configurada no sistema 100. Conforme discutido, o pipeline sprite seguro pode ser um pipeline alternativo ao pipeline gráfico padrão e pode fornecer segurança aos dados confidenciais contra ataques de malware di- recionado aos dados de display de saída do sistema 100.
Enquanto a implementação dos exemplos de processo 200, 300, 400, e processos discutidos em relação à FIG. 1 pode incluir o empreendi- mento de todos os blocos mostrados na ordem ilustrada, a presente publica- ção não é limitada nesse sentido e, em vários exemplos, a implementação dos processos 200 e 300 pode incluir o empreendimento apenas de um sub- conjunto dos blocos mostrados e/ou em uma ordem diferente da ilustrada.
Adicionalmente, qualquer um ou mais dos blocos das FIGS. 1-4, e processos discutidos em relação à FIG. 1, podem ser empreendidos em resposta às instruções fornecidas por um ou mais produtos de programas computacionais. Tais produtos de programas podem incluir mídia emissora de sinal fornecendo instruções que, quando executadas, por exemplo, por um processador, pode fornecer a funcionalidade aqui descrita. Os produtos de programa computacional podem ser fornecidos em qualquer forma de mídia computacional legível. Assim, por exemplo, um processador incluindo um ou mais processador(es) core(s) podem empreender um ou mais dos blocos mostrados nas FIGS. 1-4 Conforme utilizado em qualquer implementação aqui descrita, o termo "módulo" refere-se a qualquer combinação de software, firmware e/ou hardware configurado para fornecer a funcionalidade aqui descrita. O soft- ware pode ser configurado como um pacote de software, conjunto de códi- gos e/ou instruções ou instruções, e "hardware", como utilizado em qualquer implementação aqui descrita, pode incluir, por exemplo, isoladamente ou em qualquer combinação, circuitos de hardware, circuitos programáveis, circui- tos de máquinas de estado, e/ou firmware que armazena instruções execu- tadas pelos circuitos programáveis. Os módulos podem, coletivamente ou individualmente, serem configurados como circuitos que fazem parte de um sistema maior, por exemplo, um circuito integrado (IC), sistema on-chip (SoC), e daí em diante. FIG. 5 é um diagrama ilustrativo de um sistema 100 para prote- ção de dados de exibição de saída, organizado de acordo com pelo menos algumas das implementações da presente publicação. Na implementação ilustrada, o sistema 100 pode incluir um ou mais unidades de processadores centrais 506, um ou mais memórias de armazenamento 508, um mais uni- dades de processamento gráfico 510, sprite pipeline 310, e/ou dispositivo de display 170. Unidades de processamento central 506, memória de armaze- namento 508, unidade de processamento gráfico 510, e sprite pipeline 310 podem ser capazes de se comunicarem entre si, através, por exemplo, de um barramento ou outro acesso. Em várias implementações, o dispositivo de display 170 pode ser integrado a um sistema 100 ou implementado separa- damente de um sistema 100.
Conforme demonstrado, as unidades de processamento central 506 pode implementar um gerenciador de Windows 110, sistema operacional 520, e interfaces de aplicações de programação (APIs) 114, unidades de processamento gráfico 510 podem incluir mecanismos sprite 512, sprite pi- peline 310 podem incluir camadas de serviço de memória confiável (TMSL) 140, dispositivo virtual sprite 150, e área de memória virtual sprite 160, e memórias de armazenamento 508 podem incluir espaços de processamento de endereçamento 102 e espaço de memórias gráficas 130, que podem in- cluir áreas de acesso controlado 132, que não são mostradas para fins de clareza. Ainda mais, como mostrado, drivers gráficos 120 pode ser imple- mentados através de unidades de processamento central 506 e/ou unidades de processamento gráficos 510.
Como será apreciado, os módulos ilustrados na FIG. 5 podem incluir uma variedade módulos de software e/ou hardware e/ou módulos que podem ser implementados através de software e/ou hardware. Por exemplo, dispositivo virtual sprite 150 podem ser implementados como software atra- vés de unidades de processamento central 506 e/ou unidades de processa- mento gráficos 510. Ainda mais, as memórias de armazenamento 508 mos- tradas pode ser memórias compartilhadas para unidades de processamento central 506 e/ou unidades de processamento gráficos 510, por exemplo.
Também, o sistema 100 pode ser implementado em uma variedade de for- mas. Por exemplo, o sistema 100 (excluindo-se o dispositivo de display 170) pode ser implementado como um chip único ou dispositivo com um proces- sador gráfico, uma unidade de processador central quad-core, cache on- board, e um módulo controlador de memória de entrada/saída (l/O) (não mostrado). Em outros exemplos, o sistema 100 (novamente excluindo-se o dispositivo de display 170) pode ser implementado como um chipset.
Por exemplo, uma camada de serviço de memória confiável 140 pode ser implementada através de unidades de processamento central 506, o dispositivo virtual sprite 130 pode ser implementado através de mecanismo sprite 512 de unidades de processamento gráfico 510, o espaço de endere- ço do processo 102 pode ser implementado através de armazenamentos de memória 508, espaço de memória gráfica 114 pode ser implementada por meio de armazenamento de memória 508, gestor Windows 110 pode ser im- plementado por meio das unidades de processamento central 506, a tabela de gráficos tradução (não mostrado na FIG. 5) pode ser implementada atra- vés de driver gráfico 120, e driver gráficos 120 pode ser implementado atra- vés de uma das unidades centrais de processamento 506 ou unidades de processamento gráficos 510.
Unidades centrais de processamento 506 podem incluir qualquer implementação adequada incluindo, por exemplo, multiprocessador(es), pro- cessadores multicore, circuitos integrados de aplicação específica, chip(s), chipsets, ou similares. Além disso, unidades de processamento gráfico 510 podem incluir qualquer implementação adequada, incluindo, por exemplo, processador(es), processadores multicore, aplicação específica de circuitos integrados, dispositivos lógicos programáveis, placas de vídeo, gráficos inte- grados, unidade(s) de processamento gráfico de propósito geral, ou simila- res. Adicionalmente, memórias de armazenamento 508 podem ser de qual- quer tipo de memória tal como a memória volátil (por exemplo, Memória de Acesso Aleatório Estático - SRAM, Memória de Acesso Dinâmico - DRAM, etc.) ou memória não volátil (por exemplo, memória flash, etc.), e assim por diante. Em um exemplo não limitador, memórias de armazenamento 508 podem ser implementadas através de memória cache. Como discutido, em vários exemplos, o sistema 100 pode ser implementado como um chipset ou um sistema em um chip. Sistema operacional 520 pode incluir qualquer sis- tema operacional adequado tal como, por exemplo, um sistema operacional de base Microsoft Windows. FIG. 6 ilustra um exemplo de sistema 600 de acordo com a pre- sente publicação. Em várias implementações, o sistema 600 pode ser um sistema de mídia apesar do sistema 600 não ser limitado a esse contexto.
Por exemplo, o sistema 600 pode ser incorporado em um computador pes- soal (PC), computador portátil, computador ultraportátil, tablet, touch pad, computador portátil, computador de mão, palmtop, assistente digital pessoal (PDA), telefone celular, a combinação de celular telefone / PDA, televisão, dispositivo inteligente (por exemplo, smartphone, tablet inteligente ou televi- são inteligente), dispositivo de internet móvel (MID), dispositivo de mensa- gens, dispositivo de comunicação de dados, e assim por diante.
Em várias implementações, o sistema 600 inclui uma plataforma 602, acoplado a um display 620. Plataforma 602 pode receber conteúdo de um dispositivo de conteúdo, tais como dispositivo(s) de serviços de conteúdo 630 ou dispositivo(s) de conteúdo de entrega 640 ou outras fontes de conte- údo semelhantes. Um controlador de navegação 650, incluindo uma ou mais características de navegação, pode ser usado para interagir com, por exem- plo, uma plataforma 602 e/ou de exibição 620. Cada um desses componen- tes está descrito em maiores detalhes abaixo.
Em várias implementações, a plataforma 602 pode incluir qual- quer combinação de um chipset 605, processador 610, memória 612, arma- zenamento 614, subsistema de gráficos 615, aplicações 616 e/ou rádio 618. O chipset 605 pode fornecer intercomunicação entre o processador 610, memória 612, unidade de armazenamento 614, subsistema gráfico 615, a- plicações 616 e/ou rádio 618. Por exemplo, o chipset 605 pode incluir um adaptador de armazenamento (não exibido), capaz de fornecer intercomuni- cação com a unidade de armazenamento 614. O processador 610 pode ser implementado com processadores do tipo CISC (Complex Instruction Set Computer) ou RISC (Reduced Instruc- tion Set Computer); processadores compatíveis com o conjunto de instru- ções x86, multicore ou qualquer outro microprocessador ou unidade central de processamento. Em várias implementações, o processador 610 pode ser de processador(es) dual-core, processador(es) móveis dual-core, e assim por diante. A memória 612 pode ser implementada como um dispositivo de memória volátil tal como, mas não limitado a, Memórias de Acesso (RAM), Memória de Acesso Aleatório Dinâmico (DRAM) ou RAM Estática (SRAM). A unidade de armazenamento 614 pode ser implementada como um dispositivo de armazenamento não volátil incluindo, mas não limitado a, uma unidade de disco magnético, uma unidade de disco óptico, dispositivo de armazenamento interno, dispositivo de armazenamento anexado, memó- ria flash, SDRAM (DRAM sincrônico) alimentada por bateria e/ou um disposi- tivo de armazenamento acessível por rede. Em várias implementações, a unidade de armazenamento 614 pode incluir tecnologia para aumentar a proteção aprimorada de desempenho de armazenamento para mídia digital valiosa quando múltiplos discos rígidos estão incluídos, por exemplo. O subsistema gráfico 615 pode executar o processamento de imagens fixas ou em vídeo para exibição. O subsistema gráfico 615 pode ser uma unidade de processamento gráfico (GPU) ou uma unidade de proces- samento visual (VPU), por exemplo. Uma interface analógica ou digital pode ser utilizada para um subsistema gráfico comunicativamente acoplado 615 ou um display 620. Por exemplo, a interface pode ser qualquer de uma Inter- face Multimídia de Alta Definição, Porta de Exibição, HDMI sem fio, e/ou técnicas sem fio HD compatíveis. O subsistema gráfico 615 pode estar inte- grado ao processador 610 ou chipset 605. Em algumas implementações, o subsistema gráfico 615 pode ser um cartão independente comunicativamen- te acoplado ao chipset 605.
As técnicas de processamento de vídeo e/ou gráficos aqui des- critas podem ser implementadas em diversas arquiteturas de hardware. Por exemplo, funcionalidade de vídeo e/ou gráfica pode ser integrada dentro de um chipset. Alternativamente, um discreto processador gráfico e/ou de vídeo pode ser utilizado. Ainda como outra implementação, as funções de vídeo e/ou gráficas podem ser fornecidas por um processador de finalidade geral, incluindo um processador multicore. Em outras modalidades, as funções po- dem ser implementadas em um equipamento eletrônico de consumidor. Rádio 618 pode incluir um ou mais rádios capazes de transmitir e receber sinais usando diversas técnicas de comunicação sem fio adequa- das. Tais técnicas podem envolver comunicações através de uma mais re- des sem fio. Exemplos de redes sem fio incluem (mas não estão limitados a) redes locais sem fio (WLANs), redes de área pessoal sem fio (WPANs), rede de área metropolitana (WMANs), redes celulares, e redes de satélites. Na comunicação através dessas redes, rádio 618 pode operar de acordo com um ou mais padrões aplicáveis em qualquer versão.
Em várias implementações, display 620 pode incluir qualquer monitor ou display do tipo de televisão. Display 620 pode incluir, por exem- plo, uma tela de computador, tela de toque, monitor de vídeo, dispositivo do tipo televisão, e/ou uma televisão. Display 620 pode ser digital e/ou analógi- ca. Em várias implementações, display 620 pode ser um display holográfico.
Também, o display 620 pode ser uma superfície transparente que pode re- ceber uma projeção visual. Tais projeções podem transmitir diversas formas de informação, imagens e/ou objetos. Por exemplo, tais projeções podem ser uma cobertura visual para uma aplicação de realidade móvel aumentada (MAR). Sob o controle de uma ou mais aplicações de software 616, plata- forma 602 pode exibir a interface de usuário 622 no display 620.
Em várias implementações, dispositivo(s) serviços de conteúdo 630 pode ser apresentado por qualquer serviço nacional, internacional e/ou independente e, portanto, acessível a plataforma 602 através da Internet, por exemplo. Dispositivo(s) de serviços de conteúdo 630 pode ser acoplado à plataforma 602 e/ou ao display 620. Plataforma 602 e/ou dispositivo(s) de serviços de conteúdo 630 podem ser acoplado a uma rede 660 para se co- municar (por exemplo, enviar e / ou receber) informações e meios de comu- nicação para rede 660. Equipamento(s) de entrega de conteúdo 640 pode ser acoplado à plataforma 602 e/ou ao display 620.
Em várias implementações, o(s) dispositivo(s) de serviços de conteúdo 630 podem incluir uma caixa de televisão a cabo, computador pessoal, rede, telefone, dispositivos de Internet ativado ou aparelho capaz de fornecer informações e/ou conteúdos digitais e qualquer outro dispositivo similar capaz de unidirecional ou bidirecionalmente comunicar conteúdos en- tre provedores de conteúdo e plataforma 602 e/display 620, via rede 660 ou diretamente. Será apreciado que o conteúdo pode ser comunicado unidire- cional e/ou bidirecionalmente para e a partir de qualquer um dos componen- tes do sistema 600 e um fornecedor de conteúdos, através da rede 660. E- xemplos de conteúdo pode incluir qualquer informação de mídia, incluindo, por exemplo, vídeo, música, informações médicas e de jogos, e assim por diante. O(s) dispositivo(s) de serviços de conteúdo 630 podem receber conteúdo, como programação de televisão a cabo, incluindo informações de mídia, informação digital, e/ou outros conteúdos. Exemplos de provedores de conteúdo podem incluir qualquer fornecedor de conteúdo de televisão a cabo ou via satélite, rádio ou de Internet. Os exemplos apresentados não pretendem limitar as implementações de acordo com a presente divulgação, de qualquer maneira.
Em várias implementações, a plataforma 602 pode receber si- nais de controle do controlador de navegação 650 com uma ou mais funções de navegação. Os recursos de navegação do controlador 650 podem ser usados para interagir com a interface de usuário 622, por exemplo. Em mo- dalidades, o controlador de navegação 650 pode ser um dispositivo aponta- dor, que pode ser um componente de hardware de computador (especifica- mente, um dispositivo de interface humana) que permita a um usuário inserir dados espaciais (por exemplo, contínuo e multidimensional) em um compu- tador. Muitos sistemas, tais como interfaces gráficas de usuário (GUI) e tele- visores e monitores permitem ao usuário controlar e fornecer dados para o computador ou a televisão através de gestos físicos.
Movimentos dos recursos de navegação do controlador 650 po- dem ser replicados em uma tela (por exemplo, display 620) por movimentos de um ponteiro, cursor, anel de foco, ou outros indicadores visuais exibidos no display. Por exemplo, sob o controle de aplicações de software 616, os recursos de navegação localizados no controlador de navegação 650 podem ser mapeados para recursos de navegação virtual exibidas na interface do usuário do 622, por exemplo. Em modalidades, o controlador 650 pode não ser um componente separado mas pode ser integrado a uma plataforma 602 e/ou display 620. A presente publicação, entretanto, não está limitada aos elementos ou ao contexto aqui mostrado ou descrito.
Em várias implementações, os drivers (não mostrados) podem incluir a tecnologia para permitir que os usuários instantaneamente ligar e desligar a plataforma 602 como uma televisão com o toque de um botão a- pós o boot-up inicial, quando ativado, por exemplo. A lógica do programa pode permitir que a plataforma 602 transmita o conteúdo para adaptadores de mídia ou outro dispositivo(s) de serviços de conteúdo 630 ou dispositi- vo(s) de conteúdo entrega 640, mesmo quando a plataforma está "desliga- da". Além disso, o chipset 605 podem incluir suporte de hardware e/ou soft- ware para som surround 8.1 de áudio e/ou áudio surround de alta definição (7.1), por exemplo. Drivers podem incluir um driver gráfico para plataformas gráficas integradas. Em modalidades, o driver gráfico pode compreender um componente periférico interconectado (PCI) de placa de vídeo Express.
Em várias implementações, qualquer um ou mais dos compo- nentes mostrados no sistema 600 podem ser integrados. Por exemplo, a pla- taforma 602 e dispositivo(s) de serviços de conteúdo 630 pode ser integra- do, ou plataforma 602 e um dispositivo(s) de distribuição de conteúdo 640 pode ser integrado, ou plataforma 602, dispositivo(s) de serviços de conteú- do 630, e dispositivo(s) de distribuição de conteúdo 640 pode ser integrado, por exemplo. Em várias modalidades, a plataforma 602 e display 620 podem ser uma unidade integrada. Display 620 e dispositivo(s) de serviços de con- teúdo 630 pode ser integrado, ou o display 620 e dispositivo(s) de entrega de conteúdo 640 pode ser integrado, por exemplo. Esses exemplos não têm a intenção de limitar a presente publicação.
Em várias modalidades, o sistema 600 pode ser implementado como um sistema sem fio, um sistema com fio, ou uma combinação de am- bos. Quando implementado como um sistema sem fio, sistema 600 pode in- cluir componentes e interfaces apropriados para comunicar através de uma mídia compartilhada sem fio, como uma ou mais antenas, transmissores, re- ceptores, transmissores, amplificadores, filtros, controle lógico e assim por diante. Um exemplo de meios de comunicação sem fio para dividir pode in- cluir partes de um espectro sem fios, tais como o espectro de RF e assim por diante. Quando implementado como um sistema com fio, o sistema 600 pode incluir componentes e interfaces apropriadas para a comunicação atra- vés de meios de comunicação com fio, como a entrada/saída adaptadores (l/O), conectores físicos para conectar o adaptador de l/O com um meio de comunicação com fio correspondente, um cartão de interface de rede (NIC), controlador de disco, controlador de vídeo, controlador de áudio, e outros semelhantes. Exemplos de meios de comunicação com fio pode incluir um fio, cabo, fios metálicos, placa de circuito impresso (PCB), backplane, matriz de comutação, material semicondutor, fio de par trançado, cabo coaxial, fibra óptica, e assim por diante. A plataforma 602 pode estabelecer um ou mais canais lógicos ou físicos para comunicar informações. A informação pode incluir informação de mídia ou de controle. A informação de mídia pode se referir a qualquer dado representando um conteúdo para um usuário. Exemplos de conteúdo podem incluir, por exemplo, os dados de uma conversa de voz, videoconfe- rência, vídeo streaming, correio eletrônico ("e-mail"), mensagem, mensagem de correio de voz, símbolos alfanuméricos, gráficos, imagem, vídeo, texto e assim por diante. Dados de uma conversa de voz podem ser, por exemplo, uma informação de voz, os períodos de silêncio, o ruído de fundo, ruído de conforto, tons e assim por diante. Informações de controle podem se referir a todos os dados que representam os comandos, instruções ou palavras de controle destinados a um sistema automatizado. Por exemplo, informações de controle podem ser utilizadas para direcionar informações de mídia atra- vés de um sistema, ou instruir um nó para processar as informações da mí- dia de uma maneira predeterminada. As modalidades, entretanto, não estão limitadas aos elementos ou ao contexto mostrado ou descrito na FIG. 6.
Conforme descrito acima, o sistema 600 pode ser configurado em diversos estilos físicos ou formas de fatores. A FIG. 7 ilustra implemen- tações para um pequeno dispositivo de fatores de forma 700 no qual o sis- tema 600 pode estar configurado. Em algumas modalidades, por exemplo, o dispositivo 700 pode ser implementado como um dispositivo computacional móvel com capacidades sem fio. Um dispositivo de computação móvel pode referir-se a qualquer dispositivo que tenha um sistema de processamento e uma fonte de energia móvel ou de alimentação, tais como uma ou mais ba- terias, por exemplo.
Como descrito acima, exemplos de um dispositivo de computa- ção móvel podem incluir um computador pessoal (PC), laptop, computador ultraportátil, tablet, touch pad, computador de mão, computador portátil, palmtop, assistente digital pessoal (PDA), telefone celular, combinação tele- fone celular/PDA, televisão, dispositivo inteligente (por exemplo, smartpho- ne, tablet inteligente ou televisão inteligente), dispositivo de internet móvel (MID), dispositivo de mensagens, dispositivo de comunicação de dados, e assim por diante.
Exemplos de um dispositivo de computação móvel também po- dem incluir computadores que estão dispostos a ser usado por uma pessoa, como um computador de pulso, computador de dedo, computador anel, computador de óculos, computador de clipe de cinto, computador de faixa de braço, computadores de calçados, computadores de roupas e outros compu- tadores que podem ser vestidos. Em várias concretizações, por exemplo, um dispositivo de computação móvel pode ser implementado como um telefone inteligente capaz de executar aplicações de computador, bem como a co- municação de voz e/ou de dados. Embora algumas modalidades podem ser descritas com um dispositivo de computação móvel implementado como um telefone inteligente por exemplo, pode compreender-se que outras modali- dades podem ser implementadas utilizando-se também outros dispositivos de computação móvel sem fios. As modalidades não se limitam a esse con- texto.
Como mostrado na FIG. 7, o dispositivo 700 pode incluir um in- vólucro 702, um display 704, um dispositivo de entrada/saída (I / O) 706, e uma antena 708. Dispositivo 700 pode também incluir recursos de navega- ção 712. Display 704 pode incluir qualquer display adequado para a exibição de informações apropriadas para um dispositivo de computação móvel. Dis- positivo l/O 706 pode incluir qualquer dispositivo de E/S apropriado para in- serir informações em um dispositivo de computação móvel. Exemplos de dispositivos de l/O 706 podem incluir um teclado alfanumérico, um teclado numérico, um touch pad, chaves de entrada, botões, interruptores, interrup- tores de balancim, microfones, alto-falantes, dispositivo de reconhecimento de voz e software, e assim por diante. A informação também pode ser inse- rida em um dispositivo 700 através de um microfone (não mostrado). Tal in- formação pode ser digitalizada por um dispositivo de reconhecimento de voz (não mostrado). As modalidades não se limitam a esse contexto.
Diversas modalidades podem ser implementadas através do uso de elementos de hardware, software ou a combinação de ambos. Exemplos de elementos de hardware podem incluir processadores, microprocessado- res, circuitos, elementos do circuito (por exemplo, transistores, resistores, capacitores, indutores, e assim por diante), circuitos integrados, circuitos in- tegrados de aplicação específica (ASIC), dispositivos lógicos programáveis (PLD), processadores de sinais digitais (DSP), conjunto de portas de campo programáveis (FPGA), portas lógicas, registradores, dispositivos semicondu- tores, chips, microchips, chipset, e assim por diante. Exemplos de software podem incluir componentes de software, programas, aplicativos, programas de computador, programas aplicativos, programas de sistema, programas de máquinas, software de sistema operacional, middleware, firmware, módulos de software, rotinas, sub-rotinas, funções, métodos, procedimentos, interfa- ces de software, interface de programação de aplicativos (API), conjuntos de instruções, código de computação, código de computador, segmentos de código, segmentos de código de computador, palavras, valores, símbolos, ou qualquer combinação destes. Determinar se um modo de realização é implementado utilizando elementos de hardware e/ou elementos de software pode variar de acordo com diversos fatores, tais como a taxa computacional desejada, os níveis de energia, tolerância ao calor, o orçamento de ciclo de processamento, taxas de dados de entrada, taxas de dados de saída, recur- sos de memória, velocidades de barramento de dados e outras restrições de projeto ou desempenho.
Um ou mais aspectos de uma configuração, pelo menos, podem ser implementados por instruções representativas armazenadas num meio de leitura óptica, que representa várias lógicas dentro do processador, o que, quando lidas por um computador, faz com que a máquina fabrique a lógica para realizar as técnicas aqui descritas. Tais representações, conhe- cidas como "núcleos IP", podem ser armazenadas em uma máquina de mí- dia legível e tangível, fornecida a vários clientes ou instalações de fabricação para carregar em máquinas de fabricação que realmente fazem a lógica ou processador.
Enquanto certas características estabelecidas aqui têm sido descritas com referência a várias implementações, estas descrições não se destinam a serem interpretadas em um sentido limitador. Assim, várias mo- dificações das implementações aqui descritas, bem como outras implemen- tações, que são evidentes para os expertos na área à qual pertence a pre- sente divulgação, são considerados a estarem dentro do espírito e do âmbito da presente publicação.
Os exemplos a seguir referem-se a outras modalidades.
Em um exemplo, um método implementado por computador para proteger os dados de display de saída pode incluir o registro de um processo como um processo protegido por uma camada de serviço de memória confi- ável. Uma porção de um espaço de endereçamento de processo pode ser marcado como um buffer de display isolado associado com o processo pro- tegido e outra parte do espaço de endereçamento de processo pode ser marcada como um display de buffer de armazenamento relacionado com o processo protegido. Uma parte de um espaço de memória de gráficos pode ser marcado como uma região de memória gráfica de acesso controlado.
Pode ser previsto um dispositivo virtual sprite e uma região de memória vir- tual sprite associada. Em resposta à recepção de dados confidenciais para o display de buffer isolado, uma interface de programação de aplicativos pode ser invocada através de um gerenciador Windows para receber informações associadas com o display de buffer de armazenamento associado ao pro- cesso protegido. Os dados confidenciais do display de buffer isolado podem ser transferidos para a região memória do dispositivo virtual sprite. Os dados confidenciais na região da memória do dispositivo virtual sprite podem ser transferidos para a área da memória de gráfica de acesso controlado. Os dados confidenciais na área de memória gráfica de acesso controlado po- dem ser fornecidos para o dispositivo de exposição.
Em um outro exemplo de um método implementado por compu- tador para proteger os dados de saída de vídeo, a camada de serviço de memória confiável pode ser carregada. Um dispositivo virtual sprite não veri- ficado pode ser exposto através da camada de serviço de memória confiá- vel. Um driver de dispositivo virtual sprite não verificado associado ao dispo- sitivo virtual sprite não verificado pode ser carregado através de um sistema operacional. Pode ser determinada, através da camada de serviço de me- mória confiável, se o driver do dispositivo Sprite virtual não verificado está incluso em uma lista provida de autorizados. Se o driver do dispositivo virtual sprite não verificado estiver incluído na lista provida de autorizados, o dispo- sitivo sprite virtual não verificado pode ser registrado como o dispositivo do sprite virtual através da camada de serviço de memória confiável. Uma vista da memória confiável de display de buffer isolado poderá ser criada, através da camada de serviço de memória confiável, de modo que a vista da memó- ria confiável de display de buffer isolado permita o acesso ao display de buf- fer isolado apenas por meio de um programa registrado, e de tal forma que o dispositivo virtual sprite seja um programa registrado. Uma vista de memória confiável de área de memória gráfica de acesso controlado poderá ser cria- da, através da camada de serviço de memória confiável, de tal forma que a vista de memória confiável de área de memória gráfica de acesso controlado permita o acesso à região da memória de acesso controlado gráficos so- mente através de um programa registrado, e de tal forma que o dispositivo virtual sprite seja um programa registado. Os dados confidenciais podem ser recebidos no display de buffer isolado. O uso do display de buffer isolado pode ser desencadeado seletivamente com base na identificação de dados provenientes do processo protegido associados com um ambiente de hard- ware protegido ou com o processo protegido registrado para proteção com a camada de serviço de memória de confiança. Um mecanismo blitter pode ser desativado e o monitoramento da tabela de gráficos tradução pode ser ativado, através do sistema operacional. O dispositivo sprite virtual pode ser implementado através de um mecanismo Sprite de um processador gráfico e a camada de serviço de memória confiável pode ser implementada através de uma unidade de processamento central. Marcar a porção do espaço de memória gráfica como a região de memória gráfica de acesso controlado pode incluir o acesso a uma tabela de tradução de gráficos através de uma vista de memória física de uma tabela de conversão de gráficos implemen- tada através da camada de serviço de memória confiável, de tal forma que a tabela de tradução de gráficos esteja configurada para converter endereços de memória de gráficos virtuais memória para endereços de memória gráfica física. O dispositivo virtual sprite pode ser um programam registrado com acesso ao display de buffer isolado e à área de memória de gráficos de a- cesso controlado. A camada de serviço de memória confiável pode ser car- regada e o dispositivo virtual sprite não verificado pode ser exposto antes de o sistema operacional enumerar os dispositivos Peripheral Component Inter- connect Express. A camada de serviço de memória confiável pode ser car- regada após o sistema operacional enumerar os dispositivos Peripheral Component Interconnect Express, de tal forma que a exposição do dispositi- vo virtual sprite não verificado inclui expor o dispositivo virtual sprite não veri- ficado como um dispositivo hot-plug para invocar um gerenciador de disposi- tivos do sistema operacional para verificar novamente um barramento Peri- pheral Component Interconnect Express. A informação associada com o display de buffer de armazenamento pode incluir coordenadas do display de buffer de armazenamento. O processo protegido pode incluir um processo relacionado com uma transação financeira online. O display de buffer de ar- mazenamento pode ser aberto ao sistema operacional e o display de buffer isolado do sistema operacional. O espaço de memória gráfica pode incluir um espaço de memória de entrada/saída mapeado (MMIO). Um malware pode acessar o display de buffer de armazenamento mas não o display de buffer isolado. A camada de serviço de memória confiável pode incluir um componente de modo raiz da extensão da máquina virtual.
Em outro exemplo, um sistema de segurança de dados de saída de vídeo em um computador pode incluir um dispositivo de exibição, um ou mais processadores, uma ou mais memórias de armazenamento, um espa- ço de endereçamento de processo, incluindo um display de buffer de arma- zenamento, um gerenciador Windows e um pipeline sprite incluindo uma ca- mada de serviço de memória confiável, um dispositivo virtual sprite e uma região de memória virtual sprite associada. O dispositivo de display pode ser configurado para exibir dados. Um ou mais processadores podem ser comu- nicavelmente acoplados ao dispositivo de display. Um ou mais memórias de armazenamento podem ser comunicavelmente acopladas a um ou mais pro- cessadores. O pipeline sprite pode ser configurado para registar um proces- so como um processo protegido por meio da camada de memória de serviço confiável, marcar uma parte do espaço de endereçamento do processo co- mo um display de buffer isolado associado com o processo protegido, mar- car uma parte de um espaço de memória de gráficos como uma região de memória gráfica de acesso controlado, receber dados confidenciais no dis- play de buffer isolado, transferir os dados confidenciais no display de buffer isolado para a região de memória de dispositivo virtual sprite, transferir os dados confidenciais na área da memória do dispositivo virtual sprite para a área de memória gráfica de acesso controlado e fornecer os dados confi- denciais na região de memória gráfica de acesso controlado para o disposi- tivo de exibição.
Em um outro exemplo de um sistema para proteger os dados de saída de exibição em um computador, o sistema pode incluir um ou mais processadores gráficos e um sistema operacional. Um ou mais processado- res gráficos podem ser comunicativamente acoplados a um ou mais proces- sadores, e um ou mais processadores gráficos podem incluir um mecanismo sprite. O sistema operacional pode ser implementado através de um ou mais processadores. O pipeline sprite pode ser ainda configurado para expor, a- través da camada de serviço de memória confiável, um dispositivo virtual s- prite não verificado , determinar, através da camada de serviço de memória confiável, se um driver de dispositivo virtual sprite não verificado está incluí- do em uma lista fornecida de autorizados, se o dispositivo virtual sprite não verificado está incluído na lista de autorizados provida, cadastrar, através da camada de serviço confiável de memória, o dispositivo virtual sprite não veri- ficado como o dispositivo do sprite virtual, criar, através da camada de servi- ço de memória confiável, uma vista de memória de display de buffer isolado confiável, de modo que a vista de memória de display de buffer isolado con- fiável permita o acesso ao display de buffer isolado apenas por meio de um programa registrado, e de tal forma que o dispositivo do sprite virtual seja um programa registrado, criar , através da camada de serviço de memória confiável, um acesso à área da vista de memória gráfica controlada confiá- vel, de tal forma que a vista de memória a área de memória gráfica de aces- so controlado permita o acesso a região da memória de acesso controlado gráficos somente através de um programa registrado, e de tal forma que o dispositivo do sprite virtual seja um programa registrado, receber os dados confidenciais para display de buffer isolado, seletivamente inicie o uso do display de buffer isolado com base na identificação de um dos dados prove- nientes do processo protegido sendo associado com um ambiente de hard- ware protegido ou o processo protegido registrar para proteção com a ca- mada de serviço de memória confiável. O sistema operacional pode ser con- figurado para carregar a camada de serviço de memória confiável, carregar o driver de dispositivo virtual sprite não verificado associado ao dispositivo virtual sprite não verificado, desativar um mecanismo blitter e permitir o mo- nitoramento da tabela de tradução de gráficos e enumerar os dispositivos Peripheral Component Interconnect Express, em que a camada de serviço de memória confiável é carregada e o dispositivo virtual sprite não verificado é exposto antes de o sistema operacional enumerar os dispositivos Periphe- ral Component Interconnect Express e em que o dispositivo virtual sprite não verificado seja exposta como um dispositivo hot-plug para invocar um geren- ciador de dispositivos do sistema operacional para verificar novamente o barramento Peripheral Component Interconnect Express, O pipeline sprite pode ser configurado para marcar a parte do espaço de memória gráfica como a região de memória gráfica de acesso controlado, acessando uma tabela de tradução de gráficos através de uma vista de memória física da tabela de tradução de gráficos implementada através da camada de serviço de memória confiável, de tal forma que a tabela de tradução de gráficos es- teja configurada para converter endereços de memória virtuais gráficas para endereços de memórias gráficas físicas. A informação associada com o dis- play de buffer de armazenamento pode incluir coordenadas do display de buffer de armazenamento. O processo protegido pode incluir um processo relacionado com uma transação financeira online. O display de buffer de ar- mazenamento pode ser aberto ao sistema operacional e o display de buffer isolado pode ser isolado do sistema operacional. O espaço de memória grá- fica pode incluir um espaço de memória de entrada/saída mapeado (MMIO).
Um malware pode acessar o display de buffer de armazenamento mas não o display de buffer isolado. A camada de serviço de memória confiável pode incluir um componente de modo raiz da extensão da máquina virtual. O dis- positivo virtual sprite pode ser um programam registrado com acesso ao dis- play de buffer isolado e à área de memória de gráficos de acesso controla- do. A camada de serviço de memória confiável pode ser implementada atra- vés de um ou mais processadores, o dispositivo virtual sprite pode ser im- plementado através do mecanismo sprite, o espaço de endereço do proces- so pode ser implementado através de uma ou mais memórias de armaze- namento, o espaço de memória de gráficos pode ser implementado através de uma ou mais memórias de armazenamento, o gerenciador Windows pode ser implementado por meio de um ou mais processadores, a tabela de gráfi- cos tradução pode ser implementada através de um driver de gráficos, e o driver gráfico pode ser implementado através de pelo menos um ou mais processadores ou um ou mais processadores gráficos.
Em outro exemplo, pelo menos uma mídia de leitura por máqui- na pode incluir uma pluralidade de instruções que, em resposta a ser execu- tado num dispositivo de computador, faz com que o dispositivo de computa- ção realize o método de acordo com qualquer um dos exemplos acima.
Em ainda outro exemplo, um aparelho pode incluir meios para a realização dos métodos de acordo com qualquer um dos exemplos acima.
Os exemplos acima podem incluir específicas combinações de recursos. No entanto, tais exemplos não se limitam a este respeito e, em vá- rias implementações, os exemplos acima podem incluir a realização de ape- nas um subconjunto de tais características, a realização de uma ordem dife- rente de tais características, a realização de uma combinação de tais carac- terísticas diferentes, e/ou empreender recursos adicionais no lugar desses recursos listados explicitamente. Por exemplo, todas as características des- critas em relação aos exemplos de métodos podem ser implementadas no que diz respeito aos exemplos de aparelho, os exemplos de sistema, e/ou os exemplos de artigos, e vice-versa.

Claims (24)

1. Método implementado por computador para proteger o display de saída de dados compreende: registrar um processo como um processo protegido por uma camada de serviço de memória confiável; marcar uma primeira parte de um espaço de endereço de pro- cesso como um display de buffer isolado associado com o processo protegi- do e uma segunda parte do espaço de endereço de processo como um dis- play de buffer de armazenamento associado com o processo protegido; marcar uma parte de um espaço de memória gráfica como uma região de memória gráfica de acesso controlado; proporcionar um dispositivo virtual sprite e uma região de memó- ria virtual sprite associada; invocar, em resposta à recepção de dados confidenciais para o display de buffer isolado, uma interface de programação de aplicativos atra- vés de um gerenciador Windows para receber informações associadas com o display de buffer de armazenamento associado ao processo de proteção; transferir dados confidenciais no display de buffer isolado para a região de memória de dispositivo virtual sprite; transferir os dados confidenciais na região de memória do dispo- sitivo virtual sprite para a região de memória gráfica de acesso controlado, e fornecer dados confidenciais na região de memória gráficas de acesso controlado para um dispositivo de exibição.
2. Método de acordo com a reivindicação 1, compreen- dendo também: criar, através da camada de serviço de memória confiável, uma vista da memória de display de buffer isolado confiável, em que a vista da memória de display de buffer isolado confiável permite o acesso o display de buffer isolado apenas por meio de um programa registrado, e em que o dis- positivo virtual sprite é um programa registado.
3. Método de acordo com a reivindicação 1, compreen- dendo também: criar, através da camada de serviço de memória confiável, uma região de vista da memória de display de buffer isolado confiável, no qual a região de vista da memória de display de buffer isolado confiável permite o acesso à região de memória gráfica de acesso controlado apenas por meio de um programa registrado, e em que o dispositivo virtual sprite é um pro- grama registado.
4. Método de acordo com a reivindicação 1, compreen- dendo também: carregar uma camada de serviço de memória confiável; expor, através de uma camada de serviço de memória confiável, um dispositivo virtual sprite não verificado; carregar, através do sistema operacional, um driver de dispositi- vo virtual sprite não verificado associado ao dispositivo virtual sprite não veri- ficado; determinar, através da camada de serviço de memória confiável, se o driver do dispositivo virtual sprite não verificado está incluído em uma lista de autorizados provida; e se o driver do dispositivo virtual sprite não verificado estiver in- cluído na lista provida de autorizados, registrar, através da camada de servi- ço de memória confiável, o dispositivo virtual sprite não verificado como o dispositivo sprite virtual.
5. Método de acordo com a reivindicação 1, compreen- dendo também: provocar seletivamente o uso do display de buffer isolado base- ado em pelo menos uma parte de um dos dados de identificação provenien- tes do processo protegido sendo associado com um ambiente de hardware protegido ou o processo protegido registrar para proteção com a camada de serviço de memória de confiança.
6. Método de acordo com a reivindicação 1, compreen- dendo também: implementar o dispositivo sprite através de um mecanismo sprite de um processador gráfico e implementar a camada de serviço de memória através de uma unidade de processamento central.
7. Método de acordo com a reivindicação 1, em que marca a parte do espaço de memória gráfica como a região de memória gráfica de acesso controlado compreende o acesso a uma tabela de tradução de gráfi- cos através de uma vista de memória física de tabela de tradução de gráfi- cos implementada através da camada de serviço de memória confiável, no qual a tabela de tradução de gráficos é configurada para traduzir endereços de memória gráfica virtual para endereços de memória gráfica física.
8. Método de acordo com a reivindicação 1, em que o es- paço de memória gráfica compreende um espaço de memória de memória mapeada de entrada/saída (MMIO).
9. Método de acordo com a reivindicação 1, em que o dis- play de buffer de armazenamento está aberto ao sistema operacional, e on- de o display de buffer isolado esteja isolado do sistema operacional.
10. Método de acordo com a reivindicação 1, em que o malware possa acessar o display de buffer de armazenamento mas não o display de buffer isolado, e onde a camada de serviço de memória confiável compreende um componente de modo raiz de extensão de máquina virtual.
11. Método de acordo com a reivindicação 1, compreen- dendo também: carregar uma camada de serviço de memória confiável; expor, através de uma camada de serviço de memória confiável, um dispositivo virtual sprite não verificado; carregar, através de um sistema operacional, um driver de dis- positivo virtual sprite não verificado associado a um dispositivo virtual sprite não verificado; determinar, através de uma camada de serviço de memória con- fiável, se o dispositivo virtual sprite não verificado está incluído em uma lista provida de autorizados; se o driver do dispositivo virtual sprite não verificado está incluí- do na lista de autorizados provida, registrando, através da camada de servi- ço de memória confiável, o dispositivo virtual sprite não verificado como o dispositivo virtual sprite; criar, através da camada de serviço de memória confiável, uma vista de memória confiável do display de buffer isolado, em que a vista de memória confiável do display de buffer isolado permite o acesso ao display de buffer isolado apenas por meio de um programa registrado, e em que o dispositivo do sprite virtual seja um programa registrado; criar, através da camada de serviço de memória confiável, uma vista de memória gráfica confiável de acesso controlado, na qual a vista de memória gráfica confiável de acesso controlado permita o acesso à região de memória gráfica de acesso controlado apenas por meio de um programa registrado, e em que o dispositivo virtual sprite seja um programa registrado; receber os dados confidenciais no display de buffer isolado; provocar seletivamente o uso do display de buffer isolado base- ado em pelo menos uma parte de um dos dados de identificação provenien- tes do processo protegido sendo associado com um ambiente de hardware protegido ou o processo protegido registrar para proteção com a camada de serviço de memória de confiança; desabilitar um mecanismo blitter e habilitar o monitoramento da tabela de conversão de gráficos, através do sistema operacional; implementar o dispositivo virtual sprite através de um mecanis- mo sprite de um processador gráfico e implementar a camada de serviço de memória confiável através de uma unidade de processamento central; e, onde a marcação de parte do espaço de memória gráfica como a região de memória gráfica de acesso controlado compreende o acesso a uma tabela de tradução de gráficos através de uma vista de memória física de tabela de tradução de gráficos implementada através da camada de ser- viço de memória confiável, e na qual a tabela de tradução de gráficos esteja configurada para traduzir endereços de memória virtual de gráficos para en- dereços físicos de memória gráfica, em que o dispositivo virtual sprite é um programa registado com acesso ao display de buffer isolado e a área da memória gráfica de acesso controlado, em que a camada de serviço de memória confiável é carregada e o dispositivo Sprite virtuais não verificado é exposto antes de o sistema operacional enumerando dispositivos Peripheral Component Interconnect Express, em que a camada de serviço de memória confiável é carregada após o sistema operacional enumerar os dispositivos Peripheral Component Interconnect Express, e no qual a exposição do dispositivo virtual sprite não verificado compreende expor o dispositivo virtual sprite não verificado como um dispositivo hot-plug para invocar um gerenciador de dispositivos do sis- tema operacional para verificar novamente um barramento Peripheral Com- ponent Interconnect Express, em que a informação associada ao display de buffer de armaze- namento compreende coordenadas do display de buffer de armazenamento, em que o processo protegido compreenda um processo relacio- nado a uma transação financeira online, em que o display de buffer de armazenamento esteja aberto pa- ra o sistema operacional, e em que o display de buffer isolado esteja isolado do sistema operacional, em que o espaço de memória gráfica compreenda um espaço de memória mapeada de entrada/saída (MMIO), onde o malware pode acessar o display de buffer de armazena- mento, mas não o display de buffer isolado, e em que a camada de serviço de memória confiável compreende uma extensão de máquina virtual de componente de modo raiz.
12. Sistema para proteger o display de dados de saída de um computador, compreendendo: um equipamento de display configurado para exibir dados; um ou mais processadores comunicativamente acoplados ao equipamento de display; uma ou mais memórias de armazenamento comunicativamente acoplados a um ou mais processadores; um espaço de endereço de processo incluindo um display de buffer de armazenamento; um gerenciador Windows; e um sprite pipeline compreendendo uma camada de serviço de memória confiável, um dispositivo virtual sprite e uma área de memória vir- tual sprite associada, o sprite pipeline configurado para: registrar o processo como um processo protegido através de uma camada de serviço de memória confiável; marcar uma parte do espaço de endereço de processo como um display de buffer isolado associado com o processo protegido; marcar uma parte do espaço de memória de gráficos como uma área de memória gráfica de acesso controlado; receber dados confidenciais em um display de buffer isolado; transferir os dados confidenciais em um display de buffer isolado para a área de memória de dispositivo virtual sprite; transferir os dados confidenciais na área de memória de disposi- tivo virtual sprite para a área de memória gráfica de acesso controlado; e fornecer os dados confidenciais na área de memória gráfica de acesso controlado para o equipamento de display.
13. Sistema de acordo com a reivindicação 12, compreen- dendo também: um sistema operacional implementado através de um ou mais processadores, em que o sprite pipeline é também configurado para: expor, através da camada de serviço de memória confiável, um dispositivo virtual sprite não verificado; determinar, através da camada de serviço de memória confiável, se um dispositivo virtual sprite não verificado está incluído em uma lista for- necida de autorizados, se o driver de dispositivo virtual sprite não verificado está incluí- do na lista fornecida de autorizados, registrar, através da camada de servi- ços de memória confiável, o dispositivo virtual sprite não verificado como o dispositivo virtual sprite, e em que o sistema operacional esteja configurado para: carregar a camada de serviço de memória confiável; carregar o driver do dispositivo virtual sprite não verificado asso- ciado com o dispositivo virtual sprite não verificado.
14. Sistema de acordo com a reivindicação 12, compreen- dendo também: um sistema operacional implementado através de um ou mais processadores, em que o sprite pipeline é também configurado para: expor, através da camada de serviço de memória confiável, um dispositivo virtual sprite não verificado; determinar, através da camada de serviço de memória confiável, se um dispositivo virtual sprite não verificado está incluído em uma lista for- necida de autorizados; se o driver de dispositivo virtual sprite não verificado está incluí- do na lista fornecida de autorizados, registrar, através da camada de servi- ços de memória confiável, o dispositivo virtual sprite não verificado como o dispositivo virtual sprite, e em que o sistema operacional esteja configurado para: carregar a camada de serviço de memória confiável; carregar o driver do dispositivo virtual sprite não verificado asso- ciado com o dispositivo virtual sprite não verificado; e enumerar os dispositivos Peripheral Component Interconnect Express, onde a camada de serviço de memória confiável é carregada e o dispositivo virtual sprite não verificado é exposto antes do sistema operacio- nal enumerar os dispositivos Peripheral Component Interconnect Express e em que o dispositivo virtual sprite não verificado é exposto como um disposi- tivo hot-plug para invocar um gerenciador de dispositivos do sistema opera- cional para verificar novamente um barramento Peripheral Component Inter- connect Express.
15. Sistema de acordo com a reivindicação 12, em que o sprite pipeline está configurado para; criar, através da camada de serviço de memória confiável, uma vista de memória de display de buffer isolado confiável, em que a vista de memória de display de buffer isolado confiável permita o acesso ao display de buffer isolado apenas por meio de um programa registrado, e em que o dispositivo virtual sprite seja um programa registado.
16. Sistema de acordo com a reivindicação 12, em que o sprite pipeline está configurado para: criar, através da camada de serviço de memória confiável, uma vista de memória confiável de área de memória gráfica de acesso controla- do, em que a vista de memória confiável de área de memória gráfica de a- cesso controlado permita o acesso à área de memória gráfica de acesso controlado apenas por meio de um programa registrado, e em que o disposi- tivo virtual sprite seja um programa registado.
17. Sistema de acordo com a reivindicação 12, em que o sprite pipeline está configurado para marcar a parte do espaço de memória gráfica como a região de memória gráfica de acesso controlado acessando uma tabela de tradução de gráficos através de uma vista de memória física de uma tabela de tradução de gráficos implementada através da camada de serviço de memória confiável, e na qual a tabela de tradução de gráficos es- tá configurada para traduzir endereços de memória gráficos virtuais para en- dereços de memória gráfica física.
18. Sistema de acordo com a reivindicação 12, em que o processo protegido compreende um processo relacionado a uma transação financeira online.
19. Sistema de acordo com a reivindicação 12, em que o buffer de vídeo titular lugar é aberto para o sistema operacional, e em que o mostrador de tampão isolado é isolado a partir do sistema operativo.
20. Sistema de acordo com a reivindicação 12, em que o espaço de memória gráfica compreende um espaço memória mapeada de entrada/saída (MMIO).
21. Sistema de acordo com a reivindicação 12, em que um malware pode acessar um display de buffer de armazenamento mas não um display de buffer isolado.
22. Sistema de acordo com a reivindicação 12, que inclui ainda: um ou mais processadores gráficos comunicativamente acopla- dos a um ou mais processadores, um ou mais processadores gráficos com- preendendo um mecanismo sprite; um sistema operacional implementado através de um ou mais processadores, em que o sprite pipeline é também configurado para: expor, através da camada de serviço de memória confiável, um dispositivo virtual sprite não verificado; determinar, através da camada de serviço de memória confiável, se um dispositivo virtual sprite não verificado está incluído em uma lista for- necida de autorizados; se o driver de dispositivo virtual sprite não verificado está incluí- do na lista fornecida de autorizados, através da camada de serviços de me- mória confiável, o dispositivo virtual sprite não verificado como o dispositivo virtual sprite; criar, através da camada de serviço de memória confiável, uma vista de memória de display de buffer isolado confiável, em que a vista de memória de display de buffer isolado confiável permita o acesso ao display de buffer isolado apenas por meio de um programa registrado, e em que o dispositivo virtual sprite seja um programa registado; criar, através da camada de serviço de memória confiável, uma vista de memória confiável de memória gráfica de acesso controlado, em que a vista de memória confiável de memória gráfica de acesso controlado permita o acesso à área de memória gráfica de acesso controlado apenas por meio de um programa registrado, e em que o dispositivo virtual sprite se- ja um programa registado; receber os dados confidenciais no display de buffer isolado; e acionar seletivamente o uso do display de buffer isolado com base em, pelo menos parte de uma identificação de dados proveniente do processo protegido sendo associado com um ambiente de hardware prote- gido ou o processo protegido registrando para proteção com a camada de serviço de memória confiável, em que o sistema operacional esteja configurado para: carregar a camada de serviço de memória confiável; carregar o driver do dispositivo virtual sprite não verificado asso- ciado com o dispositivo virtual sprite não verificado; desativar um mecanismo blitter e permitir o monitoramento da tabela de tradução de gráficos; enumerar dispositivos Peripheral Component Interconnect Ex- press, onde a camada de serviço de memória confiável é carregada e o dis- positivo virtual sprite não verificado é exposto antes do sistema operacional enumerar os dispositivos Peripheral Component Interconnect Express e em que o dispositivo virtual sprite não verificado é exposto como um dispositivo hot-plug para invocar um gerenciador de dispositivos do sistema operacional para verificar novamente um barramento Peripheral Component Interconnect Express, em que o sprite pipeline está configurado para marcar a parte do espaço de memória gráfica como a região de memória gráfica de acesso controlado, acessando uma tabela de tradução de gráficos através de uma vista de memória física de tabela de tradução de gráficos implementada a- través da camada de serviço de memória confiável, e na qual a tabela de tradução de gráficos esteja configurada para traduzir endereços de memó- rias gráficas virtuais para endereços de memórias gráficas físicas, em que a informação associada ao display de buffer de armaze- namento compreende coordenadas do display de buffer de armazenamento, em que o processo protegido compreenda um processo relacio- nado a uma transação financeira online, em que o display de buffer de armazenamento esteja aberto pa- ra o sistema operacional, e em que o display de buffer isolado esteja isolado do sistema operacional, em que o espaço de memória gráfica compreenda um espaço de memória mapeada de entrada/saída (MMIO), em que um malware pode acessar um display de buffer de ar- mazenamento mas não um display de buffer isolado, em que a camada de serviço de memória confiável compreende uma extensão de máquina virtual de componente de modo raiz, em que o dispositivo virtual sprite é um programa registado com acesso ao display de buffer isolado e a área da memória gráfica de acesso controlado, e em que a camada de serviço de memória confiável é implemen- tada através de um ou mais processadores, o dispositivo sprite virtual é im- plementado através do mecanismo sprite, o espaço de endereço do proces- so é implementado através de uma ou mais memórias de armazenamento, o espaço de memória gráfica é implementada através de um ou mais memó- rias de armazenamento, o gerenciador Windows é implementado através de um ou mais processadores, a tabela de tradução de gráficos é implementa- da por meio de um driver gráficos, e o driver gráfico é implementado através de pelo menos um ou mais processadores ou um ou mais processadores gráficos.
23. Mídia de leitura por máquina compreendendo: uma pluralidade de instruções que, em resposta de serem exe- cutadas em um dispositivo computacional, fazem com que o dispositivo computacional realize o método como definido em qualquer uma das reivin- dicações 1a 11.
24. Aparelho, compreendendo: meios de desempenhar os métodos como definidos em qualquer uma das reivindicações 1a 11.
BRBR102014003201-0A 2013-02-11 2014-02-11 Proteção de dados de saída contra ataques de software maliciosos BR102014003201A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/763,914 US9158942B2 (en) 2013-02-11 2013-02-11 Securing display output data against malicious software attacks

Publications (1)

Publication Number Publication Date
BR102014003201A2 true BR102014003201A2 (pt) 2015-08-04

Family

ID=50112722

Family Applications (1)

Application Number Title Priority Date Filing Date
BRBR102014003201-0A BR102014003201A2 (pt) 2013-02-11 2014-02-11 Proteção de dados de saída contra ataques de software maliciosos

Country Status (4)

Country Link
US (1) US9158942B2 (pt)
EP (1) EP2765530B1 (pt)
CN (1) CN103984894B (pt)
BR (1) BR102014003201A2 (pt)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6098110B2 (ja) * 2012-10-24 2017-03-22 富士通株式会社 情報処理装置、データ保護方法、およびプログラム
EP3066612B1 (en) 2013-11-07 2019-01-02 Scantrust SA Two dimensional barcode and method of authentication of such barcode
US9436823B1 (en) * 2013-12-17 2016-09-06 Google Inc. System and method for detecting malicious code
US9507951B2 (en) * 2014-10-20 2016-11-29 Intel Corporation Technologies for secure input and display of virtual touch user interfaces
KR102130744B1 (ko) * 2015-07-21 2020-07-06 삼성전자주식회사 전자 장치 및 이의 제어 방법
US10216681B2 (en) * 2015-12-01 2019-02-26 Dell Products, Lp System and method for managing workloads and hot-swapping a co-processor of an information handling system
US10354653B1 (en) * 2016-01-19 2019-07-16 United Services Automobile Association (Usaa) Cooperative delegation for digital assistants
US10397262B2 (en) * 2017-07-20 2019-08-27 Biocatch Ltd. Device, system, and method of detecting overlay malware
DE102018220284A1 (de) * 2018-11-26 2020-05-28 Infineon Technologies Ag Gesicherte recheneinrichtung
US11443051B2 (en) * 2018-12-20 2022-09-13 Advanced Micro Devices, Inc. Secure computer vision processing
US11294702B2 (en) 2019-05-01 2022-04-05 EMC IP Holding Company LLC Method and system for processing data using a processing pipeline and processing units
CN110276214B (zh) * 2019-06-12 2021-10-12 浙江大学 一种基于从机访问保护的双核可信soc架构及方法
US11204711B2 (en) * 2019-10-31 2021-12-21 EMC IP Holding Company LLC Method and system for optimizing a host computing device power down through offload capabilities
US20210166227A1 (en) * 2019-11-28 2021-06-03 Qualcomm Incorporated Secure User Interface With Improved User Experience
US20230259656A1 (en) * 2022-02-15 2023-08-17 Microsoft Technology Licensing, Llc Systems and methods for rendering secured content items
US20240029191A1 (en) * 2022-07-25 2024-01-25 Avago Technologies International Sales Pte. Limited. Secure graphics watermark

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957332B1 (en) 2000-03-31 2005-10-18 Intel Corporation Managing a secure platform using a hierarchical executive architecture in isolated execution mode
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20050283602A1 (en) * 2004-06-21 2005-12-22 Balaji Vembu Apparatus and method for protected execution of graphics applications
US7765544B2 (en) 2004-12-17 2010-07-27 Intel Corporation Method, apparatus and system for improving security in a virtual machine host
US7941860B2 (en) 2005-05-13 2011-05-10 Intel Corporation Apparatus and method for content protection using one-way buffers
US7752436B2 (en) * 2005-08-09 2010-07-06 Intel Corporation Exclusive access for secure audio program
US20070106986A1 (en) 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor
US7958320B2 (en) 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
FR2914457B1 (fr) 2007-03-30 2009-09-04 Ingenico Sa Procede et dispositif de visualisation securitaire
JP4959473B2 (ja) 2007-08-30 2012-06-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの画面の情報を保護するシステム
US8646052B2 (en) 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment

Also Published As

Publication number Publication date
EP2765530A1 (en) 2014-08-13
EP2765530B1 (en) 2018-01-17
CN103984894A (zh) 2014-08-13
US9158942B2 (en) 2015-10-13
CN103984894B (zh) 2017-10-13
US20140230067A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
BR102014003201A2 (pt) Proteção de dados de saída contra ataques de software maliciosos
US9799093B2 (en) Secure rendering of display surfaces
CN107851163B (zh) 用于i/o数据的完整性、防重放和真实性保证的技术
KR101954733B1 (ko) 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치
RU2667713C2 (ru) Селективное обеспечение соблюдения целостности кода, обеспечиваемое менеджером виртуальной машины
US10536274B2 (en) Cryptographic protection for trusted operating systems
US10831889B2 (en) Secure memory implementation for secure execution of virtual machines
US9519803B2 (en) Secure environment for graphics processing units
US9172724B1 (en) Licensing and authentication with virtual desktop manager
US9507941B2 (en) Method of verifying integrity of electronic device, storage medium, and electronic device
WO2017112248A1 (en) Trusted launch of secure enclaves in virtualized environments
US10691627B2 (en) Avoiding redundant memory encryption in a cryptographic protection system
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US11481521B2 (en) Secure red-black air-gapped portable computer
JP2010170543A (ja) 画像を直接レンダリングしてセキュアなメモリ領域で対応するユーザ入力と相関付ける方法およびシステム
US10719456B2 (en) Method and apparatus for accessing private data in physical memory of electronic device
US20220232038A1 (en) Web Conference Security
US10938857B2 (en) Management of a distributed universally secure execution environment
US20130282907A1 (en) Network separation apparatus and method
US20220309197A1 (en) Automated hardening of sensitive transactions
CN111742315B (en) Safe red-black air gap portable computer
WO2019148447A1 (zh) 数据保护方法和数据保护装置
Edwards et al. PROTECTING SENSOR DATA FROM MALWARE ATTACKS.
Ruan et al. Intel’s Embedded Solutions: from Management to Security
Ma Insight into TCB Issues for Information Security

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 6A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2553 DE 10/12/2019.