BR112016004399B1 - Método para testar um aplicativo, aparelho e memória legível por processador - Google Patents

Método para testar um aplicativo, aparelho e memória legível por processador Download PDF

Info

Publication number
BR112016004399B1
BR112016004399B1 BR112016004399-5A BR112016004399A BR112016004399B1 BR 112016004399 B1 BR112016004399 B1 BR 112016004399B1 BR 112016004399 A BR112016004399 A BR 112016004399A BR 112016004399 B1 BR112016004399 B1 BR 112016004399B1
Authority
BR
Brazil
Prior art keywords
application
information
computing device
processor
request
Prior art date
Application number
BR112016004399-5A
Other languages
English (en)
Other versions
BR112016004399A8 (pt
Inventor
Dave Christiansen
Bethan Tetrault Cantrelli
Michelle R. Bruno
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112016004399A8 publication Critical patent/BR112016004399A8/pt
Publication of BR112016004399B1 publication Critical patent/BR112016004399B1/pt

Links

Images

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/031Protect user input by software means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Quality & Reliability (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

MÉTODO PARA TESTAR UM APLICATIVO, APARELHO E MEMÓRIA LEGÍVEL POR PROCESSADOR. A invenção diz respeito à tecnologia que inclui um método para testar qual informação um aplicativo transfere para um dispositivo de computação externo. Um consentimento de um usuário é explicitamente obtido antes do aplicativo transferir alguns tipos de informação, tais como informações sensíveis. Quando é feita uma determinação de que um aplicativo está transferindo informação sensível, uma solicitação de consentimento de um usuário pode ser proporcionada, que seja precisa e detalhada. No ambiente de pré-produção, a tecnologia pode ser utilizada para detectar se esta informação sensível está sendo transferida, e para validar se uma solicitação de consentimento é necessária ou desnecessária. Para determinar isto, a utilização de calços é utilizada para interceptar chamadas de aplicativo para APIs que retornam informação sensível. A informação sensível solicitada pode ser substituída por informação gravada ou forjada destas APIs para produzir uma sentinela ou um informante. De forma similar, o tráfego da rede do aplicativo pode ser analisado por outro calço para determinar quando a informação substituta está presente.

Description

ANTECEDENTES
[001] Os dispositivos de computação podem obter informação a partir de um usuário que pode não ser pretendida para ser disseminada para outros. Um usuário pode fazer uma escolha sobre permitir a disseminação de tal informação para outros. O dispositivo de computação pode subsequentemente disseminar a informação baseado na escolha do usuário. Entretanto, tal consulta sobre uma escolha frequentemente interrompe e/ou distrai da experiência do usuário e pode não ser necessária.
[002] Alternativamente, avisos legais podem ser postados antes ou durante a experiência do usuário, os quais indicam como a informação pode ou não ser disseminada. Entretanto, tal postagem de aviso legal também pode interromper e distrair da experiência de um usuário bem como não proporcionar a informação no aviso legal que é importante ou que pode ser entendida ao tomar uma decisão informada por um usuário.
[003] Os aplicativos para dispositivos de computação tipicamente não são escritos ou codificados pelos fabricantes do dispositivo de computação. Por consequência, os fabricantes do dispositivo de computação não sabem o que um aplicativo faz com a informação solicitada. Mesmo quando um fabricante de dispositivo de computação sabe que um aplicativo se comunica em uma rede, um fabricante de computador não sabe qual informação é transferida na rede.
SUMÁRIO
[004] A tecnologia inclui um método para testar se um aplicativo transfere informação particular para um dispositivo de computação externo. Uma verificação (ou certificação) de que um aplicativo não está transferindo informação particular para um dispositivo de computação externo reduz interrupções para um usuário solicitar consentimento para transferir tal informação, desde que a verificação indica que não ocorre transferência. Menos solicitações para consentimento pode aprimorar a experiência de um usuário. Quando é feita uma determinação de que um aplicativo está transferindo informação particular, uma solicitação de consentimento a partir de um usuário pode ser proporcionada, a qual é precisa bem como detalhada quanto a qual informação particular pode ser transferida e onde. Em uma concretização, um usuário consentiria a transferência de informação sensível, tal como um sinal de vídeo, para fora do dispositivo de computação, antes que ocorra qualquer transferência. Em uma concretização, informação sensível pode ser um clipe de vídeo de um usuário ou podem ser metadados contendo informação que pode ser pessoalmente identificável tal como informação de endereço ou número de telefone, ou outras informações não pretendidas para serem disseminadas por um usuário.
[005] Quando um aplicativo, tal como um jogo, é carregado em um dispositivo de computação, uma lista de Autorização de Segurança da Rede (NSAL) é lida a partir do aplicativo para determinar se o aplicativo irá se comunicar ou se conectar com um dispositivo de computação externo. Uma NSAL pode incluir endereços de rede autorizados com os quais um aplicativo pode ser comunicar quando executando em um dispositivo de computação. Quando a NSAL não inclui qualquer endereço de rede, não existe necessidade de obter consentimentos a partir de um usuário com respeito à transferência de informação sensível externamente devido ao aplicativo não ter a capacidade de fazer isso. Mesmo com uma NSAL, um aplicativo pode ser testado ou verificado em relação a se informação sensível não é transferida para um computador externo. Adicionalmente, quando uma NSAL indica que um dispositivo de computação possui conectividade, uma verificação de qual informação sensível particular é transferida e para qual endereço de rede pode ser feita.
[006] Quando um aplicativo é testado e/ou está em um processo de verificação (ou de certificação), a utilização de calços é utilizada para interceptar chamadas de aplicativo para interfaces de programação de aplicativo (APIs) que retornam informação, tal como um sinal de vídeo. Nas concretizações, um calço ou colocação de calço se refere a uma pequena biblioteca que de forma transparente intercepta uma API e altera os parâmetros passados, manipula a própria operação, ou redireciona a operação de computação para qualquer lugar. Em uma concretização, um verificador de aplicativo também pode ser utilizado. A informação sensível solicitada pode ser substituída ou reposta por informação gravada ou forjada a partir destas APIs para produzir uma sentinela ou um informante. Por exemplo, quando um aplicativo chama uma API "GetUserID", o aplicativo tipicamente receberia um ID de usuário tal como "DavidChr". Utilizando a utilização de calços, uma informação substituída, tal como "XYZZY" ao invés disso pode ser retornada para o aplicativo. Alternativamente, um aplicativo pode solicitar uma imagem de um usuário a partir de uma câmera no dispositivo de computação. Ao invés de uma imagem do usuário, uma fotografia de uma cafeteria pode ser proporcionada para o aplicativo solicitante.
[007] Durante o teste e/ou a verificação, o tráfego de rede do aplicativo pode ser analisado por outro calço para determinar quando o informante / sentinela está presente em uma concretização. Quando o informante / sentinela está presente, as APIs (e os soquetes / identificadores passados para o mesmo) identificam para qual endereço de rede o informante foi transmitido.
[008] Se informação falsa gravada (captura de sentinela) ou informação forjada (falsificação de informante) for utilizada para substituir informação sensível depende da API e do aplicativo. Alguns aplicativos podem analisar a informação sensível. Por exemplo, um aplicativo, tal como um jogo eletrônico interativo (jogo), pode executar processamento de imagem em relação ao sinal de vídeo retornado a partir da câmera para fazer seu próprio rastreamento esquelético. Em uma concretização, proporcionar um sinal de vídeo irá permitir que um jogo se comporte normalmente, de modo que informação falsa gravada, tal como um sinal de vídeo, pode ter que ser gravado e pesquisado em relação ao tráfego.
[009] Nas concretizações, informação falsa gravada (tais como vídeos de objetos imóveis, os quais podem ser facilmente pesquisados em relação ao tráfego) pode ser proporcionada. Em uma concretização, um calço pode detectar em tempo real se e onde um aplicativo está exfiltrando. Isto permite que diagnósticos seja executados em relação a um aplicativo. Por exemplo, um despejo de memória pode ser gerado e enviado para um desenvolvedor de aplicativo para análise.
[0010] Um método para testar um aplicativo inclui receber uma solicitação a partir do aplicativo por informação. A informação substituta é proporcionada como a informação para o aplicativo. Uma solicitação a partir do aplicativo para emissão de informação de aplicativo para um dispositivo de computação externo é recebida. A informação de aplicativo é inspecionada para determinar se a informação substituta está incluída na informação de aplicativo. A informação de aplicativo é emitida para o dispositivo de computação externo.
[0011] Uma concretização de aparelho compreende pelo menos uma câmera para obter um sinal de vídeo, pelo menos um processador e pelo menos uma memória legível por processador para armazenar um aplicativo possuindo instruções legíveis por processador e um endereço de rede para um dispositivo de computação. A pelo menos uma memória legível por processador também pode armazenar um sistema operacional que pode permitir ao aplicativo transferir pelo menos uma parte do sinal de vídeo para o dispositivo de computação externo no endereço de rede. O processador executa as instruções legíveis por computador do sistema operacional e o aplicativo para receber, pelo sistema operacional, uma solicitação a partir do aplicativo em relação ao sinal de vídeo. O sistema operacional proporciona um sinal de vídeo substituto para o aplicativo. Uma solicitação a partir do aplicativo para emitir informação de aplicativo para um dispositivo de computação externo também é recebida pelo sistema operacional. O sistema operacional inspeciona a informação de aplicativo para determinar se o sinal de vídeo substituto está incluído na informação de aplicativo. O sistema operacional emite a informação de aplicativo para o dispositivo de computação externo.
[0012] Em outra concretização, uma ou mais memória legíveis por processador incluem instruções que quando executadas causam que um ou mais processadores executem um método. O método incluir receber informação e uma solicitação para a informação a partir de um aplicativo. A informação é substituída pela informação substituta. A informação substituta é proporcionada como a informação para o aplicativo. Uma solicitação a partir do aplicativo para emitir a informação de aplicativo para um dispositivo de computação em um endereço de rede é recebida. A informação de aplicativo é pesquisada para determinar se a informação substituta está incluída na informação de aplicativo. A informação de aplicativo é emitida para o dispositivo de computação externo no endereço de rede.
[0013] Este sumário é proporcionado para introduzir uma seleção de conceitos em uma forma simplificada, os quais são adicionalmente descritos abaixo na Descrição Detalhada. Este sumário não é pretendido para identificar aspectos chave ou aspectos essenciais do assunto reivindicado, nem é pretendido como um auxílio ao determinar o escopo do assunto reivindicado.
BREVE DESCRIÇÃO DOS DESENHOS
[0014] A Figura 1 é um diagrama de blocos de alto nível de uma arquitetura de sistema ilustrativa.
[0015] A Figura 2 é um diagrama de blocos de alto nível de uma arquitetura de software ilustrativa.
[0016] A Figura 3 é um diagrama de blocos de alto nível de um componente de software de gerenciamento de rede e interface com o usuário em um sistema operacional e aplicativo ilustrativos.
[0017] A Figura 4 é um fluxograma de um método ilustrativo para testar um aplicativo.
[0018] A Figura 5A é um fluxograma de um método ilustrativo para determinar se um aplicativo emite informação, tal como um sinal de vídeo, para um dispositivo de computação externo.
[0019] A Figura 5B é um fluxograma de um método ilustrativo para obter uma indicação de consentimento quando um aplicativo emite informação para um dispositivo de computação externo.
[0020] A Figura 6 é uma vista isométrica de um sistema ilustrativo de jogo e mídia.
[0021] A Figura 7 é um diagrama de blocos funcional ilustrativo de componentes do sistema de jogo e mídia apresentado na Figura 6.
[0022] A Figura 8 é um dispositivo de computação ilustrativo.
DESCRIÇÃO DETALHADA
[0023] A tecnologia inclui um método para testar qual informação, tal como informação sensível, um aplicativo transfere para um dispositivo de computação externo. Uma verificação (ou certificação) de que um aplicativo não está transferindo informação sensível para um dispositivo de computação externo reduz interrupções para um usuário solicitar consentimento para transferir tal informação, desde que a verificação indica que não ocorre transferência. Menos solicitações para um usuário em relação a consentimento pode aprimorar a experiência de um usuário. Quando é feita uma determinação de que um aplicativo está transferindo informação sensível, uma solicitação de consentimento a partir de um usuário pode ser proporcionada, a qual é precisa bem como detalhada sobre qual informação sensível pode ser transferida e para onde.
[0024] A colocação de calço é utilizada para interceptar chamadas de aplicativo para APIs que retornam informação sensível. A informação sensível solicitada pode ser substituída por informação substituta, tal como informação falsa gravada ou informação forjada, a partir destas APIs para produzir uma sentinela ou um informante. De forma similar, o tráfego de rede do aplicativo pode ser analisado por outro calço para determinar quando a informação substituta está presente no tráfego de saída do aplicativo. Quando a informação substituta está presente, a API identifica para onde se pretende que a informação de aplicativo, incluindo a informação substituta, seja enviada.
[0025] Por utilizar a utilização de calços, o tráfego de rede pode ser analisado antes de criptografia possível que tornaria difícil encontrar informação sensível. Por exemplo, um aplicativo poderia utilizar o Protocolo Seguro de Transferência de Hipertexto (HTTPS) para se comunicar com um dispositivo de computação externo. Concretizações contornam isso por interceptar as APIs que solicitam Camada de Soquetes Seguros Segurança de Camada de Transporte (SSL/TLS) para criptografar informação.
[0026] Um dispositivo de computação pode armazenar ou ter informação sensível disponível que um aplicativo pode solicitar. Por exemplo, um sinal de vídeo ao vivo a partir de uma câmera em um console pode ser informação sensível solicitada por um aplicativo. Um aplicativo, tal como um jogo, pode desejar transferir o sinal de vídeo para um dispositivo de computação externo para processamento, tal como sobrepondo a face de um usuário no sinal de viso sobre um personagem no jogo.
[0027] Um console pode solicitar consentimento de um usuário antes de tornar a informação sensível para o jogo devido ao jogo poder transmitir a informação sensível para um dispositivo de computação externo contrário às intenções de um usuário. Entretanto, um usuário pode não desejar ter que fazer uma escolha ao consentir transferir a informação sensível devido a isto interferir com o aspecto "divertido" de jogar um jogo.
[0028] A tecnologia proporciona informação sensível para um aplicativo sem colocar em risco o aplicativo "calling home" (transferindo a informação sensível para um dispositivo de computação externo) sem o consentimento do usuário. Utilizando a NSAL, um dispositivo de computação pode identificar classes de aplicativos que não possuem uma habilidade de transferir informação sensível para um dispositivo de computação externo. Uma NSAL pode incluir um ou mais endereços de rede para dispositivos de computação externos armazenados em um aplicativo que podem ser acessados por um sistema operacional. Uma NSAL é uma lista consentida ou vários endereços de rede entre o desenvolvedor do dispositivo de computação e o desenvolvedor de aplicativo em uma concretização. Estes aplicativos possuindo uma NSAL, a qual pode não incluir endereços de rede, podem ser confiáveis, os quais proporcionam uma vantagem de facilidade de uso para um dispositivo de computação que deseja expor informação sensível para um aplicativo. Vários aplicativos podem não incluir jogo ou anúncios com vários jogadores, de modo que estes aplicativos não precisam acessar um dispositivo de computação externo.
[0029] Em geral, quando um aplicativo carrega, um dispositivo de computação lê a NSAL para determinar qual conectividade o aplicativo possui com o mundo externo. Quando a NSAL está vazia (nenhuma conectividade), o aplicativo pode ser declarado seguro à medida que o aplicativo não pode comunicar informação sensível de um usuário para o resto do mundo e não existe necessidade de interromper um usuário ao obter consentimento. Mesmo quando um NSAL está vazio ou inclui endereços de rede, os fabricantes de dispositivo de computação podem precisar testar o aplicativo para verificar ou certificar que informação sensível particular está ou não sendo transferida por um aplicativo particular para um dispositivo de computação externo.
[0030] A Figura 1 é um diagrama de blocos de alto nível de um sistema, ou aparelho 100 que testa se um aplicativo 107a armazenado e executado no dispositivo de computação 107 transfere informação sensível 103 para um dispositivo de computação externo, tal como o dispositivo de computação 101. Em uma concretização, um teste pode ser executado durante um processo de certificação ou de verificação do aplicativo 107a. Em uma concretização, o dispositivo de computação 107 está incluído no equipamento de teste utilizado para testar o aplicativo 107. Nesta concretização, rede 105, o dispositivo de computação 101 e/ou 110 podem não estar incluídos.
[0031] Alternativamente, pode ser executado um teste durante a execução do aplicativo 107a em um dispositivo de computação 107, tal como um console, antes da informação sensível 103 ser transferida para o dispositivo de computação 101. Nesta concretização, a informação sensível 103 não é transferida a não ser que uma indicação de consentimento a partir de um usuário para transferir a informação seja obtida após um teste indicar que o aplicativo 107a pretende transferir informação sensível 103. Em uma concretização, o dispositivo de computação 107 inclui componentes de software, tal como o aplicativo 107a (incluindo a NSAL 112), o consentimento 107b, o substituto 107c e o inspetor de rede 107d armazenados na memória do dispositivo de computação 107 como descrito neste documento.
[0032] Informação sensível 103 também é armazenada como informação digital em uma memória do dispositivo de computação 107. Em uma concretização alternativa, a informação sensível 103 pode estar disponível durante a operação do dispositivo de computação 107, tal como um sinal de vídeo a partir da câmera 111 quando o dispositivo de computação 107 é ligado. Em uma concretização, a informação sensível 103 pode ser imagens ou vídeo de um ou mais usuários. Em outras concretizações, a informação sensível pode ser um clipe de vídeo de um usuário ou podem ser metadados contendo informação pessoalmente identificável tal como informação de endereço ou número de telefone, ou outra informação que um usuário não pretende que seja disseminada a partir do dispositivo de computação 107, de forma única ou em combinação. Por exemplo, a informação sensível 103 pode ser um sinal de vídeo a partir da câmera 111 no dispositivo de computação 107. O sinal de vídeo pode incluir quadros ou imagens de um ou mais usuários, tal como vídeo de um usuário enquanto jogando um jogo (aplicativo 107a) no dispositivo de computação 107.
[0033] Em uma concretização, a informação sensível 103 não é obtida a partir de um usuário sem consentimento explícito de um usuário. A informação sensível 103 também pode ser visualizada por um usuário e pode ser editada por um usuário. Em uma concretização, a informação sensível 103 também pode ser segura pelo armazenamento de uma versão criptografada da informação sensível 103 na memória bem como pela permissão de acesso à informação sensível por senha.
[0034] Em uma concretização, o dispositivo de computação 107 se comunica com o dispositivo de computação 101 localizado em uma localização física remota por meio da rede 105 como descrito neste documento. O dispositivo de computação 101 é considerado externo ao dispositivo de computação 107 em uma concretização. Em uma concretização, o aplicativo 107a pode desejar transferir informação sensível 103 para o dispositivo de computação 101 que pode proporcionar um serviço. O aplicativo 107a pode ser um jogo que deseja transferir o sinal de vídeo (ou quadro de vídeo) para um dispositivo de computação 101 para um serviço a partir do servidor de aplicativo 101a. Por exemplo, o servidor de aplicativo 101a pode proporcionar um serviço ou função de sobreposição de elementos gráficos, tal como sobrepor a face de um usuário no sinal de vídeo sobre um personagem no jogo.
[0035] Em uma concretização, o dispositivo de computação 107 também proporciona informação sensível 103 para o dispositivo de computação 101 em resposta a uma indicação de consentimento por um usuário para permitir que o aplicativo 107a transfira informação sensível 103 para um dispositivo de computação externo, tal como o dispositivo de computação 101. Quando um usuário explicitamente comunica um consentimento para o dispositivo de computação 107 em resposta à consulta, uma indicação deste consentimento pode ser armazenada como um valor digital em um endereço na memória no dispositivo de computação 108.
[0036] Em uma concretização, o dispositivo de computação 101 pode ser um servidor possuindo componentes de software do servidor e o dispositivo de computação 107 pode ser um cliente do dispositivo de computação 101. Em outra concretização, os dispositivos de computação 110 e 107 são pares. Em uma concretização ponto a ponto (P2P) de dispositivos de computação 101, 107 e 110, cada dispositivo de computação pode atuar como um cliente ou como um servidor do outro.
[0037] Os dispositivos de computação 101 e 107 podem ser comunicar por meio da rede 105 como descrito neste documento. Em concretizações adicionais, o dispositivo de computação 110 se comunica com os dispositivos de computação 101 e 107 por meio da rede 105. Em uma concretização, a rede 105 pode ser a Internet, uma Rede de Longa Distância (WAN) ou uma Rede de Área Local (LAN), de forma única ou em combinação. Nas concretizações, os dispositivos de computação 101, 107 e/ou 110 utilizam um ou mais protocolos para transferir informação, tal como o Protocolo de Controle de Transmissão / Protocolo Internet (TCP/IP). Nas concretizações, o dispositivo de computação 107 está incluído em outra rede. Informação pode ser transferida com uso de fios e/ou sem uso de fios na rede 105.
[0038] Em concretizações alternativas, o aparelho 100 inclui vários mais ou menos dispositivos de computação e/ou servidores para proporcionar e receber informação. Nas concretizações, o dispositivo de computação 101, o dispositivo de computação 110 e/ou o dispositivo de computação 107 correspondem ao dispositivo de computação 1800 possuindo componentes de hardware ilustrativos ilustrados na Figura 8 e como descritos neste documento.
[0039] Em uma concretização, o dispositivo de computação 107 está incluído em um console como descrito neste documento e ilustrado nas Figuras 6 e 7. Em uma concretização alternativa, o dispositivo de computação 101 e/ou 107 é um dispositivo de computação como ilustrado na Figura 8 e descrito neste documento. Em concretizações alternativas, o dispositivo de computação 107 pode estar incluído pelo menos em um telefone celular, dispositivo móvel, sistema incorporado, computador laptop, computador de mesa, servidor e/ou centro de dados. Em uma concretização, o dispositivo de computação 101 é um servidor e/ou centro de dados.
[0040] Nas concretizações, os dispositivos de computação 101, 107 e 110 incluem uma ou mais memórias legíveis por processador para armazenar informação digital e/ou componentes de software possuindo instruções legíveis por computador como descrito neste documento. Nas concretizações, os dispositivos de computação 101, 107 e 110 incluem um ou mais processadores para executar ou ler as instruções legíveis por processador e ler a informação digital.
[0041] A Figura 2 é um diagrama de blocos de alto nível de uma arquitetura de software ilustrativa 200 que testa se um aplicativo, tais como os aplicativos 211 até 213, transfere informação sensível 103. Nas concretizações, o Sistema Operacional (OS) 205 pode estar incluído em um dispositivo de computação 107 utilizado para verificar ou certificar um aplicativo. Em uma concretização alternativa, o OS 205 pode ser utilizado no dispositivo de computação, tal como um console como descrito neste documento, para determinar se informação sensível está sendo transferida e então obter consentimento de um usuário antes de transferir a informação sensível. O OS 205 inclui o consentimento 107b, o substituto 107c e o inspetor de rede 107d para testar se um aplicativo está transferindo informação sensível 103 para um dispositivo de computação externo.
[0042] Em uma concretização, o gerenciamento de rede 208 lê uma NSAL 112 do aplicativo 212 de modo a determinar se o aplicativo 212 pode receber informação sensível 103.
[0043] O substituto 107c substitui a informação sensível solicitada a partir do aplicativo 212 com a informação substituta 310 como ilustrado nas Figuras 2 e 3.
[0044] O inspetor de rede 107d então inspeciona ou pesquisa a informação de aplicativo a ser transferida para um dispositivo de computação externo em relação à informação substituta 310. Quando a informação substituta 310 é encontrada, o consentimento de um usuário para transferir informação sensível 103 é obtido antes que a transferência possa ocorrer.
[0045] Em uma concretização, o consentimento 107b na UI 206 obtém e armazena uma indicação do consentimento (como um valor digital) a partir de um usuário para transferir informação sensível 103 a partir do aplicativo 212 para um dispositivo de computação externo. Nas concretizações, uma indicação de consentimento pode incluir um consentimento para transferir a informação sensível 103 a partir de um aplicativo 212 ou uma negação de consentimento para transferir a informação sensível 103 a partir do aplicativo 212. Em uma concretização, os aplicativos 211 até 213 podem incluir um ou mais jogos eletrônicos interativos.
[0046] Em uma concretização, o OS 205 e os aplicativos 211 até 213 incluem um ou mais dos componentes de software. Em uma concretização, um componente de software pode incluir um programa de software, objeto de software, função de software, sub-rotina de software, método de software, instância de software, script e/ou um fragmento de código, de forma única ou em combinação. Por exemplo, o OS 205 inclui um ou mais dentre a interface com o usuário (UI) 206, o gerenciamento de processo 201, o gerenciamento de memória 202, o gerenciamento de dispositivo de entrada / saída (E/S) 203, o gerenciamento de arquivos 204, o gerenciamento de rede 208 e a proteção 207. Uma ou mais funções ilustrativas que podem ser executadas pelos vários componentes de software do OS são descritas abaixo. Em uma concretização alternativa, mais ou menos componentes de software e/ou funções dos componentes de software descritas abaixo podem ser utilizados. Em uma concretização alternativa, o consentimento 107b, a substituta 107c, e o inspetor de rede 107d podem estar incluídos em outros componentes de software.
[0047] Nas concretizações, pelo menos partes do OS 205 são armazenadas em uma ou mais memória legíveis por processador. Em uma concretização, pelo menos partes do OS 205 são armazenadas nas memórias legíveis por processador do dispositivo de computação 107 ilustrado na Figura 1.
[0048] O gerenciamento de processos 201 é responsável por criar e apagar processos do usuário e do sistema. O gerenciamento de processo 201 também pode ser responsável pela suspensão e pelo reinício de processos. O gerenciamento de processo 201 também é responsável pela sincronização e comunicação dos processos. O gerenciamento de processo 202 também é responsável pela manipulação de impasses. Em uma concretização, a substituta 107c está incluída no gerenciamento de processo 201. Como descrito neste documento, a substituta 107c também pode estar incluída em outros componentes de software.
[0049] O gerenciamento de memória 202 é responsável por manter um rastro de qual parte da memória nos diferentes tipos de memória está atualmente sendo utilizada por um componente ou aplicativo de software particular. O gerenciamento de memória 202 também decide quais processos são carregados na memória quando o espaço de memória se torna disponível. O gerenciamento de memória também aloca e retira a alocação do espaço da memória à medida que necessário.
[0050] O gerenciamento de dispositivo de entrada / saída (E/S) 203 é responsável por gerenciar dispositivos de E/S. Por exemplo, o gerenciamento de dispositivo de E/S 203 gerencia a câmera 111 que proporciona um sinal de vídeo. Em uma concretização, as peculiaridades de hardware específico são ocultas dos usuários. Em uma concretização, controladores de dispositivo conhecem as peculiaridades do dispositivo específico. Por exemplo, o gerenciamento de dispositivo de E/S 203 pode ser responsável por funções de gerenciamento de disco tais como gerenciamento de espaço livre, alocação de memória, fragmentação, e programação de atividade de remoção e de cabeçalho.
[0051] O gerenciamento de arquivos 204 é responsável por criar e apagar arquivos e diretórios. O gerenciamento de arquivos 204 pode suportar um sistema de arquivos hierárquico. O gerenciamento de arquivos 204 também pode fazer cópias de segurança de arquivos para memória secundária.
[0052] O gerenciamento de rede 208 é responsável pela comunicação com rede incluindo métodos de conexão / roteamento. O gerenciamento de rede 208 também pode ser responsável por migração de dados / processo para outros dispositivos de computação. Em uma concretização, o gerenciamento de rede 208 inclui o inspetor de rede 107d que inspeciona ou pesquisa uma memória temporária de tráfego temporariamente armazenando informação de aplicativo a ser enviada para um ou mais dispositivos de computação externos como descrito neste documento.
[0053] A proteção 207 é responsável por controlar acesso de componentes de software, processos, e/ou de usuários aos recursos do dispositivo de computação. Por exemplo, a proteção 207 é responsável por controlar o acesso aos recursos tais como ciclos da unidade de processamento central (CPU), memória, arquivos, e/ou dispositivos de E/S. A proteção 207 também é responsável pela autenticação e comunicação de usuário.
[0054] A interface com o usuário (UI) 206 proporciona uma interface com o usuário de fala, de linguagem natural, de caracteres e/ou de elementos gráficos com um usuário e é responsável por receber entrada e proporcionar saída para um usuário. Em uma concretização, a UI 206 inclui o consentimento 107b que é responsável por obter e armazenar uma indicação de consentimento a partir de um usuário como um valor digital em um endereço de uma memória no dispositivo de computação 107.
[0055] Em uma concretização de console como ilustrada nas Figuras 6 e 7, um usuário pode entrar com entrada para o console 1002 por meio de gesto, toque ou voz. Em uma concretização, a interface ótica de E/S 1135 recebe e traduz gestos de um usuário. Em uma concretização, o console 1002 inclui uma interface natural com o usuário (NUI) como a interface com o usuário 206 para receber e traduzir entradas de voz e/ou de gesto a partir de um usuário. Em uma concretização, a submontagem de painel frontal 1142 inclui uma superfície sensível ao toque e um microfone para receber e traduzir o toque ou a voz de um usuário, tal como o consentimento de um usuário, como descrito em detalhes neste documento. Em uma concretização, a interface com o usuário 206 traduz consentimento falado a partir de um usuário proporcionado para um microfone do console 1002 a partir de um ou mais usuários. Em uma concretização, a UI 206 inclui uma NUI que emite uma solicitação por voz pelo consentimento a partir de um usuário e interpreta uma resposta falada a partir do usuário, tal como o consentimento ou negação. A resposta falada, tal como o consentimento, então pode ser armazenada na memória como uma indicação de consentimento.
[0056] A Figura 3 é um diagrama de blocos de alto novel de um gerenciamento de rede ilustrativo 208 e da interface com o usuário 206 em um sistema operacional ilustrativo 205 e do aplicativo 212. Em uma concretização, o OS 205 tem acesso à informação sensível, tal como o sinal de vídeo 301 de um usuário a partir do controlador de câmera 300. Em uma concretização alternativa, o OS 205 tem acesso à informação sensível armazenada como informação digital na memória. O OS 205 pode proporcionar a informação sensível, tal como o sinal de vídeo 301, para um aplicativo 212 em resposta a uma solicitação 302. Em uma concretização, o aplicativo 212 é um jogo que faz uma solicitação por chamar uma primeira PAI.
[0057] De forma similar, o aplicativo 212 pode transferir a informação de aplicativo para um dispositivo de computação externo por proporcionar uma solicitação e a informação de aplicativo 304 para o OS 205. O OS 205 então pode transferir a informação de aplicativo como a informação de aplicativo emitida 305 para um dispositivo de computação externo em um endereço de rede proporcionado pelo aplicativo 212. Em uma concretização, a solicitação e a informação de aplicativo 304 podem incluir um endereço de rede de um dispositivo de computação externo e um sinal de vídeo 301 (informação sensível) ou informação substituta 310. Em uma concretização, a solicitação e a informação de aplicativo 304 podem incluir chamar uma segunda API, tal como uma API de transmissão, pelo aplicativo 212.
[0058] A substituta 107c inclui informação substituta 310 que substitui informação sensível, tal como o sinal e vídeo 301, quando o aplicativo 212 está sendo testado em uma concretização. A informação substituta 310 pode incluir informação como descrita neste documento, a qual posteriormente pode ser pesquisada ou inspecionada pelo gerenciamento de rede 208, e em particular pelo inspetor de rede 107d. Em uma concretização, a informação substituta 310 inclui vídeo de um objeto parado. Em uma concretização, a substituta 107c atua como um calço para uma chamada de uma API para proporcionar a informação sensível pelo aplicativo 212. Em uma concretização, a substituta 107c está incluída no gerenciamento de processo 201. Em concretizações alternativas, a substituta 107c está incluída no gerenciamento de dispositivo de E/S 203 como um controlador de dispositivo falso. Em outras concretizações, a substituta 107c está incluída no aplicativo 212 utilizando Bibliotecas de Vínculo Dinâmico (DLLs) que podem receber calços proporcionados para o aplicativo 212 pelo OS 205.
[0059] O inspetor de rede 107d no gerenciamento de rede 208 pesquisa ou inspeciona a informação de aplicativo na solicitação e na informação de aplicativo 304 em relação à informação substituta 310 de modo a determinar se o aplicativo 212 está tentando transferir informação sensível para um dispositivo de computação externo. Em uma concretização, o inspetor de rede 107d pesquisa uma memória temporária de tráfego que armazena informação de aplicativo em relação à informação substituta 310. Em uma concretização, o inspetor de rede 107d atua como um calço para uma chamada de uma API para transmitir a informação de aplicativo para um dispositivo de computação externo pelo aplicativo 212.
[0060] Em uma concretização, o inspetor de rede 107d pesquisa em relação à informação sensível, tal como dados de vídeo, que foi codificada em um formato particular pelo aplicativo 212. Em uma concretização, o aplicativo 212 pode codificar a informação sensível, tal como dados de vídeo brutos, antes de transferir para um dispositivo de computação externo devido às restrições de largura de banda. Em uma concretização, o OS 205 proporciona calços ou APIs para executar a codificação de informação para o aplicativo 212 de modo que o inspetor de rede 107d possa observar qualquer informação substituta 310 na informação codificada.
[0061] Em uma concretização, o inspetor de rede 107d pode estar apto a observar a informação substituta 310 quando o aplicativo tenta ocultar ou codificar a informação substituta 310.
[0062] As Figuras 4 a 5B são fluxogramas ilustrando métodos ilustrativos que determinam se um aplicativo pode receber informação sem obter consentimento a partir de um usuário. Nas concretizações, as etapas ilustradas nas Figuras 4 até 5B representam a operação de hardware (por exemplo, processador, memória, circuitos), software (por exemplo, OS, aplicativos, controladores, instruções executáveis por máquina / processador), ou um usuário, de forma única ou em combinação. Como os versados na técnica entenderiam, as concretizações podem incluir menos ou mais etapas apresentadas.
[0063] A Figura 4 é um fluxograma de um método ilustrativo 400 para testar um aplicativo. Em uma concretização, o método 400 é executado durante a verificação ou certificação de um aplicativo particular. Em uma concretização alternativa, o método 400 é executado antes de proporcionar uma solicitação de consentimento durante a execução de um aplicativo. Em uma concretização, o método 400 é executado pelo dispositivo de computação 107, em particular, pelo menos a substituta 107c e o inspetor de rede 107 são utilizados, como ilustrado nas Figuras 1 a 3.
[0064] A etapa 401 ilustra receber uma solicitação a partir de um aplicativo em relação à informação, tal como a informação sensível. Em uma concretização, o OS 205 recebe uma solicitação por meio da API a partir do aplicativo 212 em relação à informação sensível 103 como ilustrado nas Figuras 1 e 2.
[0065] A etapa 402 ilustra proporcionar a informação substituta como a informação para o aplicativo. Em uma concretização, a substituta 107c obtém e substitui a informação pela informação substituta e então retorna a informação substituta como a informação sensível 103 para o aplicativo 212 como descrito neste documento.
[0066] A etapa 403 ilustra receber uma solicitação a partir do aplicativo para emitir informação de aplicativo para um dispositivo de computação eterno. Em uma concretização, o OS 205 e em particular, o gerenciador de rede 208, recebe a solicitação a partir do aplicativo 212.
[0067] A etapa 404 ilustra inspecionar a informação de aplicativo para determinar se a informação substituta está incluída na informação de aplicativo. Em uma concretização, o inspetor de rede 107d executa a etapa 404 por pesquisar uma memória temporária, tal como a memória temporária de tráfego, em relação à informação substituta.
[0068] A etapa 405 ilustra emitir a informação de aplicativo para o dispositivo de computação externo. Em uma concretização, o gerenciador de rede 208 pelo menos parcialmente executa a etapa 405.
[0069] Em outras concretizações, as etapas 401 até 405 são executadas pelos menos pelos componentes de software e hardware apresentados nas Figuras 1 até 3 e 6 até 8. Por exemplo, o método 400 pode ser executado pelo console 1002 ilustrado nas Figuras 6 e 7 ou pelo dispositivo de computação 1800 ilustrado na Figura 8.
[0070] A Figura 5A é um fluxograma de um método ilustrativo 500 para determinar se um aplicativo emite informação, tal como um sinal de vídeo, para um dispositivo de computação externo. Em uma concretização, o método 500 é executado durante a verificação ou certificação de um aplicativo particular. Em uma concretização alternativa, o método 500 é executado antes de obter o consentimento de um usuário durante a execução de um aplicativo. Em uma concretização, o método 500 é executado pelo dispositivo de computação 107, em particular, pelo menos a substituta 107c e o inspetor de rede 107d são utilizados, como ilustrado nas Figuras 1 até 3.
[0071] A etapa 501 ilustra receber, pelo sistema operacional, uma solicitação a partir de um aplicativo para o sinal de vídeo. Em uma concretização, um aplicativo 212 utiliza uma primeira API para solicitar um sinal de vídeo a partir do sistema operacional 205 ilustrado na Figura 2.
[0072] A etapa 502 ilustra proporcionar um sinal de vídeo substituto, pelo sistema operacional, para o aplicativo. Em uma concretização, a substituta 107c executa a etapa 502 para substituir o sinal de vídeo solicitado por um sinal de vídeo substituto, tal como um sinal de vídeo de um objeto parado.
[0073] A etapa 503 ilustra receber, pelo sistema operacional, uma solicitação a partir do aplicativo para emitir informação de aplicativo para um dispositivo de computação externo. Em uma concretização, um aplicativo 212 utiliza uma segunda API para solicitar emitir a informação de aplicativo pelo sistema operacional 205 ilustrado na Figura 2.
[0074] A etapa 504 ilustra inspecionar, pelo sistema operacional, a informação de aplicativo para determinar se o sinal de vídeo substituto está incluído na informação de aplicativo. Em uma concretização, o inspetor de rede 107d executa a etapa 504 por pesquisar uma memória temporária, tal como a memória temporária de tráfego, em relação ao sinal de vídeo substituto.
[0075] A etapa 505 ilustra emitir, pelo sistema operacional, a informação de aplicativo para o dispositivo de computação externo. Em uma concretização, o gerenciador de rede 208 pelo menos parcialmente executa a etapa 405.
[0076] Em outras concretizações, as etapas 501 até 505 são executadas pelo menos pelos componentes de software e pelo hardware apresentado nas Figuras 1 até 3 e 6 até 8. Por exemplo, o método 500 pode ser executado pelo console 1002 ilustrado nas Figuras 6 e 7 ou pelo dispositivo de computação 1800 ilustrado na Figura 8.
[0077] A Figura 5B é um fluxograma de um método ilustrativo 510 para obter consentimento de um usuário quando um aplicativo transfere informação para um dispositivo de computação externo. Em uma concretização alternativa, o método 500 é executado antes de obter o consentimento de um usuário durante a execução de um aplicativo. Em uma concretização, o método 500 é executado pelo dispositivo de computação 107, em particular, pelo menos a substituta 107c e o inspetor de rede 107d são utilizados, como ilustrado nas Figuras 1 até 3.
[0078] A etapa 511 ilustra receber informação, tal como informação sensível 103 ilustrada na Figura 1 e descrita neste documento. Em uma concretização, um sistema operacional, tal como o OS 205, acessa, recebe ou controla a informação sensível até a liberação ou transferência da informação sensível para um aplicativo requisitante, tal como o aplicativo 212. Em uma concretização, uma câmera 111 proporciona um sinal de vídeo que é recebido pelo dispositivo de computação 107 como ilustrado na Figura 1.
[0079] A etapa 512 ilustra receber uma solicitação para a informação sensível a partir de um aplicativo. Em uma concretização, um aplicativo 212 utiliza uma primeira API para solicitar informação sensível 103 a partir do sistema operacional 205 ilustrado na Figura 2.
[0080] A etapa 513 ilustra substituir a informação sensível pela informação substituta. Em uma concretização, a substituta 107c executa a etapa 513 para substituir a informação sensível solicitada pela informação substituta como descrito neste documento.
[0081] A etapa 514 ilustra proporcionar a informação substituta como a informação sensível para o aplicativo. Em uma concretização, um aplicativo 212 utiliza uma segunda API para solicitar emitir a informação de aplicativo pelo sistema operacional 205 ilustrado na Figura 2.
[0082] A etapa 515 ilustra receber uma solicitação a partir do aplicativo para emitir a informação de aplicativo para um endereço de rede. Em uma concretização, um aplicativo 212 utiliza uma segunda API para solicitar emitir a informação de aplicativo pelo sistema operacional 205 ilustrado na Figura 2.
[0083] A etapa 516 ilustra pesquisar a informação de aplicativo para determinar se a informação substituta está incluída na informação de aplicativo. Em uma concretização, o inspetor de rede 107d executa a etapa 516 por pesquisar uma memória temporária, tal como a memória temporária de tráfego, em relação à informação substituta.
[0084] A etapa 517 ilustra obter uma indicação de consentimento antes de emitir a informação de aplicativo. Em uma concretização, o consentimento 107b obtém uma indicação de consentimento a partir de um usuário. Em uma concretização, um aplicativo pode ser notificado pelo sistema operacional para solicitar informação sensível novamente e também solicitar uma emissão da informação de aplicativo novamente de modo que a informação substituta não será utilizada após a recepção do consentimento de um usuário.
[0085] A etapa 518 emite a informação de aplicativo (sem a informação substituta) para o endereço externo. Em uma concretização, o gerenciador de rede 208 pelo menos parcialmente executa a etapa 518.
[0086] Em outras concretizações, as etapas 511 a 518 são executadas pelo menos pelos componentes de software e hardware ilustrativos apresentados nas Figuras 1 a 3 e 6 a 8. Por exemplo, o método 510 pode ser executado pelo console 1002 ilustrado nas Figuras 6 e 7 ou pelo dispositivo de computação 1800 ilustrado na Figura 8.
[0087] Em uma concretização, o dispositivo de computação 107 pode ser, mas não está limitado a um jogo de vídeo e/ou console de mídia. Em uma concretização, o dispositivo de computação 107 testa um aplicativo, tal como um jogo, antes de informação sensível ser transferida para um dispositivo de computação externo. Quando informação sensível é para ser transferida, o dispositivo de computação 107 como um jogo de vídeo e/ou console de mídia obtém uma indicação de consentimento a partir de um usuário antes da informação sensível ser transferida.
[0088] Em uma concretização, a Figura 6 agora será utilizada para descrever um jogo de vídeo e console de mídia ilustrativos, ou mais geralmente, será utilizada para descrever um sistema de jogo e mídia ilustrativo 1000 que inclui um console de jogo e mídia. A discussão seguinte da Figura 6 é pretendida para proporcionar uma breve descrição geral de um dispositivo de computação adequado com o qual conceitos apresentados neste documento podem ser implementados. É entendido que o sistema da Figura 6 é somente a título de exemplo. Em exemplos adicionais, as concretizações descritas neste documento podem ser implementadas utilizando vários dispositivos de computação clientes, seja via um aplicativo navegador ou um aplicativo de software residente em e executado pelo dispositivo de computação cliente. Como apresentado na Figura 6, um sistema de jogo e mídia 1000 inclui um console de jogo e mídia (daqui para frente "console") 1002. Em geral, o console 1002 é um tipo de dispositivo de computação cliente. O console 1002 é configurado para acomodar um ou mais controladores sem uso de fios, como representado pelos controladores 10041 e 10042. O console 1002 é equipado com uma unidade de disco rígido interna e com uma unidade de mídia portátil 1006 que suporta várias formas de mídia de armazenamento portátil, como representado por um disco de armazenamento ótico 1008. Exemplos de mídia de armazenamento portátil adequada incluem DVD, CD-ROM, discos de jogo, dentre outros. O console 1002 também inclui dois receptáculos de cartão de unidade de memória 10251 e 10252, para receber unidades de memória do tipo flash removíveis 1040. Um botão de comando 1035 no console 1002 habilita e desabilita o suporte à periférico sem uso de fios.
[0089] Como representado na Figura 6, o console 1002 também inclui uma porta ótica 1030 para comunicação sem uso de fios com um ou mais dispositivos e duas portas USB 10101 e 10102 para suportar uma conexão com uso de fios para controladores adicionais, ou outros periféricos. Em algumas implementações, o número e a disposição de portas adicionais podem ser modificados. Um botão de ativação 1012 e um botão de ejeção 1014 também estão posicionados na face frontal do console 1002. O botão de ativação 1012 é selecionado para aplicar energia para o console de jogo, e também pode proporcionar acesso a outros aspectos e controles, e o botão de ejeção 1014 alternativamente abre e fecha a bandeja de uma unidade de mídia portátil 1006 para permitir a inserção e a extração de um disco de armazenamento ótico 1008.
[0090] O console 1002 conecta-se com uma televisão ou outro vídeo (tal como o vídeo 1050) via cabos de interface A/V 1020. Em uma implementação, o console 1002 é equipado com uma porta A/V dedicada configurada para comunicação digital de conteúdo seguro utilizando cabos A/V 1020 (por exemplo, cabos A/V adequados para acoplamento com uma porta de Interface Multimídia de Alta Definição "HDMI" em um vídeo de alta definição 1050 ou outro dispositivo de vídeo). Um cabo de força 1022 proporciona energia para o console 1002. O console 1002 pode ser adicionalmente configurado com capacidade de banda larga, como representado por um cabo ou conector de modem 1024 para facilitar acesso a uma rede, tal como a Internet. As capacidades de banda larga também podem ser proporcionadas sem uso de fios, através de uma rede de banda larga tal como a rede de fidelidade sem uso de fios (Wi-Fi).
[0091] Cada controlador 1004 é acoplado com o console 1002 via uma interface com uso de fios ou sem uso de fios. Na implementação ilustrada, os controladores 1004 são compatíveis com USB e são acoplados com o console 1002 via uma porta sem uso de fios ou USB 1010. O console 1002 pode ser equipado com qualquer um dentre uma ampla variedade de mecanismos de interação com o usuário. Em um exemplo ilustrado na Figura 6, cada controlador 1004 é equipado com dois pen drive 10321 e 10322, uma D-Pad 1034, com os botões 1036, e dois ativadores 1038. Estes controladores são meramente representativos, e outros controladores de jogo conhecidos podem ser substitutos, ou adicionados para estes apresentados na Figura 6.
[0092] Em uma concretização, um usuário pode entrar com informação junto ao console 1002 por meio de gesto, toque ou voz. Em uma concretização, a interface ótica de E/S 1135 recebe e traduz gestos de um usuário. Em uma concretização, a interface ótica de E;/S inclui uma câmera para obter um sinal de vídeo, por exemplos, dos usuários. Em outra concretização, o console 1002 inclui uma NUI para receber e traduzir entradas de voz e de gesto a partir de um usuário. Em uma concretização alternativa, a submontagem do painel frontal 1142 inclui uma superfície sensível ao toque e um microfone para receber e traduzir um toque ou voz, tal como o consentimento de um usuário. Em uma concretização, a submontagem de painel frontal 1142 inclui um alto-falante para solicitar a um usuário uma indicação de consentimento (ou negação) para permitir que informação sensível seja comunicada para dispositivos de computação externos.
[0093] Em uma concretização, vários microfones 1011 podem ser ligados em uma porta USB para proporcionar um sinal de quatro canais representando a fala de um usuário. Em concretizações alternativas, um único microfone pode ser utilizado. Em uma concretização, quatro sinais de áudio de 24 bits de 16 kHz são proporcionados a partir dos vários microfones 1011 para a porta USB 1010 e pelo menos um canal de processamento de áudio. Em uma concretização, o pelo menos um canal de processamento de áudio reduz ruído associado com o pelo menos um sinal de áudio, tal como outros usuários falando ou áudio a partir de um aplicativo de jogo interativo eletrônico.
[0094] Em uma implementação, uma unidade de memória (UM) 1040 também pode ser inserida dentro do controlador 1004 para proporcionar armazenamento adicional e portátil. MUs portáteis permitem aos usuário armazenar parâmetros de jogo para uso quando jogando em outros consoles. Nesta implementação, cada controlador é configurado para acomodar duas MUs 1040, apesar de mais ou menos do que duas MUs também podem ser empregadas.
[0095] O sistema de jogo e mídia 1000 geralmente é configurado para executar jogos armazenados em um meio de memória, bem como para transferir e executar jogos, e reproduzir música e vídeo gravados anteriormente, a partir tanto de fontes eletrônicas como de mídia de disco rígido. Com as diferentes ofertas de armazenamentos, títulos (ou aplicativos) podem ser reproduzidos a partir da unidade de disco rígido, a partir de um meio em disco de armazenamento ótico (por exemplo, 1008), a partir de uma fonte online, ou a partir da MU 1040. Amostras dos tipos de mídia que o sistema de jogo e mídia 1000 é capaz de reproduzir incluem:
[0096] Títulos de jogo ou aplicativos reproduzidos a partir de CD, DVD ou de discos com maior capacidade, a partir da unidade de disco rígido, ou a partir de uma fonte online.
[0097] Música digital reproduzida a partir de um CD em uma unidade de mídia portátil 1006, a partir de um arquivo na unidade de disco rígido ou no disco de estado sólido (por exemplo, música em um formato de mídia), ou a partir de fontes online de reprodução contínua.
[0098] Áudio / Vídeo Digital reproduzido a partir de um disco DVD em uma unidade de mídia portátil 1006, a partir de um arquivo na unidade de disco rígido (por exemplo, Formato Fluxo Contínuo Ativo), ou a partir de fontes online de reprodução contínua.
[0099] Durante a operação, o console 1002 é configurado para receber entrada a partir dos controladores 1004 e exibir informação no vídeo 1050. Por exemplo, o console 1002 pode exibir uma interface com o usuário no vídeo 1050 para permitir a um usuário selecionar um jogo eletrônico interativo utilizando o controlador 1004 para exibir a informação de capacidade de resolução de estado. Em uma concretização, o console 1002 proporciona um menu para o vídeo 1050 para permitir uma seleção de consentimento (ou negação) pelos controladores 1004 para permitir que informação sensível seja comunicada para dispositivos de computação externos. Nas concretizações, um menu pode ser muito amplo tal como não consentindo ou consentindo transferir qualquer informação sensível a partir de qualquer aplicativo. Alternativamente, um menu pode permitir ao usuário selecionar ou consentir que informação particular possa ser transferida por um aplicativo particular. Por exemplos, um menu pode permitir a um usuário consentir que um sinal de vídeo seja transferido a partir de um jogo, mas o jogo não pode transferir informação de cartão de crédito.
[00100] Em uma concretização, um menu para obter consentimento de um usuário é proporcionado após um processo de teste, certificação ou verificação em relação a um aplicativo. Em uma concretização alternativa, um menu para obter consentimento de um usuário é proporcionado durante a execução do aplicativo e antes da informação sensível ser transferida para um dispositivo de computação externo.
[00101] A Figura 7 é um diagrama de blocos funcional do sistema de jogo e mídia 1000 e apresenta os componentes funcionais do sistema de jogo e mídia 1000 em maiores detalhes. O console 1002 possui uma CPU 1100, e um controlador de memória 1102 que facilita que o processador acesse vários tipos de memória, incluindo uma ROM flash 1104, uma RAM 1106, uma unidade de disco rígido ou unidade de estado sólido 1108, e a unidade de mídia portátil 1006. Em concretizações alternativas, outros tipos de tecnologia de memória volátil e não volátil podem ser utilizadas. Em uma implementação, a CPU 1100 inclui uma cache de nível 1 1110 e uma cache de nível 2 1112, para temporariamente armazenar dados e por consequência reduzir os ciclos de acesso à memória feito junto à unidade de disco rígido 1108, desse modo aprimorando a velocidade de processamento e a produtividade.
[00102] A CPU 1100, o controlador de memória 1102, e várias memória são interconectados via um ou mais barramentos. Os detalhes do barramento que é utilizado nesta implementação não são particularmente relevantes para o entendimento do assunto de interesse sendo discutido neste documento. Entretanto, será entendido que tal barramento pode incluir um ou mais dentre barramentos seriais e paralelos, um barramento de memória, uma barramento periférico, e um processador ou barramento local utilizando qualquer uma dentre várias arquiteturas de barramento. A título de exemplo, tais arquiteturas podem incluir um barramento da Arquitetura Padrão da Indústria (ISA), um barramento da Arquitetura de Micro Canal (MCA), um barramento ISA Aprimorado (EISA), um barramento local da Associação de Padrões de Eletrônica e Vídeo (VESA), e um barramento de Interconexão de Componente Periférico (PCI) também conhecido como barramento Mezanino.
[00103] Em uma implementação, a CPU 1100, o controlador de memória 1102, a ROM 1104, e a RAM 1106 são integrados em um módulo comum 1114. Nesta implementação, a ROM 1104 é configurada como uma ROM flash que é conectada com o controlador de memória 1102 via um barramento PCI e um barramento ROM (nenhum dos dois é apresentado). A RAM 1106 é configurada como vários módulos de RAM Dinâmica Síncrona de Taxa de Dados Dupla (DDR SDRAM) ou DRAM de taxa de dados mais rápida que são independentemente controlador pelo controlador de memória 1102 via barramentos separados. A unidade de disco rígido 1108 e a unidade de mídia portátil 1106 são apresentadas conectadas com o controlador de memória 1102 via o barramento PCI e um barramento da Conexão AT (ATA) 1116. Entretanto, em outras implementações, estruturas de barramento de dados dedicados de diferentes tipos também podem ser aplicadas em alternativa.
[00104] Em outra concretização, pelo menos a CPU 1100, a cache de nível 1 1110, a cache de nível 2 1112, o controlador de memória 1102 e a memória RAM 1106 estão incluídos em um Sistema em um Chip (SoC). Em uma concretização, a CPU 1100 é substituída pelos núcleos processadores. Em uma concretização, a memória RAM 1106 é substituída pela memória de alta performance, tal como DRAM de E/S Ampla e a função do controlador de memória 1102 é executada pelos núcleos processadores. Outro tipo de memória que não é memória de alta performance, tal como LPDDR3 RAM, pode ser acoplada com um SoC em uma concretização.
[00105] Um SoC (também conhecido como SOC) é um circuito integrado (IC) que integra componente e/ou subsistemas eletrônicos de um dispositivo de computação ou outro sistema eletrônico em um único substrato semicondutor e/ou em um único chip alojado dentro de um único pacote. Por exemplo, a memória que estava anteriormente em um subsistema de módulo de memória em um computador pessoal (PC) agora pode estar incluída em um SoC. De forma similar, a lógica de controle de memória pode estar incluída em um processador de um SoC ao invés do que em um controlador de memória empacotado separadamente.
[00106] Como os versados na técnica apreciariam, outros componentes eletrônicos podem estar incluídos em um SoC. Um SoC pode incluir circuitos digitais, analógicos, de sinal misturado, e/ou de rádio frequência - um ou mais em um único substrato semicondutor. Um SoC pode incluir osciladores, laços fechados em fase, contadores - temporizadores, temporizadores em tempo real, geradores de reinicialização de ativação, interfaces externas (por exemplo, Barramento Serial Universal (USB), Interface IEEE 1394 (FireWire), Ethernet, Receptor / Transmissor Assíncrono Universal (USART) e Barramentos Periféricos Seriais (SPI)), interfaces analógicas, reguladores de tensão elétrica e/ou circuitos de gerenciamento de energia.
[00107] Em concretizações alternativas, um SoC pode ser substituído por um sistema em um pacote (SiP) ou de pacote em pacote (PoP). Em um SiP, vários chips ou substratos semicondutores são alojados em um único pacote. Em uma concretização de SiP, núcleos processadores estariam em um substrato semicondutor e memória de alta performance estaria em um segundo substrato semicondutor, ambos alojados em um único pacote. Em uma concretização, o primeiro substrato semicondutor seria acoplado com o segundo substrato semicondutor por vinculação com uso de fios.
[00108] Em uma concretização de PoP, núcleos processadores estariam em uma matriz semicondutora alojada em um primeiro pacote e a memória de alta performance estaria em uma segunda matriz semicondutora alojada em um segundo pacote diferente. O primeiro e o segundo pacotes então poderiam ser empilhados com uma interface padrão para direcionar sinais entre os pacotes, em particular, matrizes semicondutoras. Os pacotes empilhados então podem ser acoplados com uma placa de circuito impresso possuindo memória adicional, a memória como um componente em uma concretização.
[00109] Nas concretizações, núcleos processadores incluem vários processadores que executam (ou lêem) instruções legíveis por processador (ou por máquina) armazenadas na memória legível do processador. Um exemplo de instruções legíveis por processador pode inclui um OS e/ou um aplicativo para o dispositivo de computação 107 (tal como o OS 205 e os aplicativos 211 até 213 apresentados na Figura 2). Os núcleos processadores podem utilizar memória de alta performance e memória adicional em resposta a executar as instruções legíveis por processador de um OS e do aplicativo. Em uma concretização, núcleos processadores podem incluir um processador e controlador de memória ou alternativamente um processador que também executa funções de gerenciamento de memória de forma similar executadas por um controlador de memória. Os núcleos processadores também podem incluir um controlador, uma unidade de processamento de elementos gráficos (GPU), um processador de sinal digital (DSP) e/ou um arranjo de portas programáveis em campo (FPGA). Em uma concretização, a memória de alta performance é posicionada na parte de cima de um núcleo processador.
[00110] Nas concretizações, a memória de alta performance e a memória adicional estão incluídas em um ou mais arranjos de células de memória em um IC disposto em substratos semicondutores separados. Em uma concretização, a memória de alta performance e a memória adicional estão incluídas nos respectivos circuitos monolíticos integrados alojados em dispositivos separadamente empacotados. Nas concretizações, a memória de alta performance e a memória adicional podem incluir memória volátil e/ou não volátil.
[00111] Tipos de memória volátil incluem, mas não estão limitados a memória de acesso aleatório dinâmica (DRAM), DRAM baseada em carga molecular (ZettaCore), DRAM de corpo flutuante e memória de acesso aleatório estática ("SRAM"). Tipos particulares de DRAM incluem SDRAM de taxa de dados dupla ("DDR"), ou SDRAM de última geração (por exemplo, "DDRn").
[00112] Tipos de memória não volátil incluem, mas não estão limitados aos tipos de memória somente para leitura que pode ser eletricamente apagada ("EEPROM"), FLASH (incluindo NAND e NOR FLASH), ONO FLASH, RAM magnética ou magneto resistiva ("MRAM"), RAM ferroelétrica ("FRAM"), meio holográfico, Ovônico / de alteração de fase, de Nano Cristais, RAM de Nanotubo (NRAM- Nantero), sistema de sonda de varredura MEMS, chave cantiléver, polímero, molecular, porta nano-flutuante e elétron único.
[00113] Uma unidade de processamento de elementos gráficos tridimensional 1120 e um codificador de vídeo 1122 formam um canal de processamento de vídeo para processamento de elementos gráficos em alta velocidade e em alta resolução (por exemplo, Alta Definição). Os dados são transportados a partir da unidade de processamento de elementos gráficos 1120 para o codificador de vídeo 1122 via um barramento de vídeo digital. Uma unidade de processamento de áudio 1124 e um codec (codificador / decodificador) de áudio 1126 formam um canal de processamento de áudio correspondente para processamento de áudio com múltiplos canais de vários formatos de áudio digital. Os dados de áudio são transportados entre a unidade de processamento de áudio 1124 e o codec de áudio 1126 via uma ligação de comunicação. Os canis de processamento de vídeo e de áudio emitem dados para uma porta A/V (áudio / vídeo) 128 para transmissão para uma televisão ou outro vídeo.
[00114] A Figura 7 apresenta o módulo 1114 incluindo um controlador hospedeiro USB 1130 e uma interface de rede 1132. O controlador hospedeiro USB 1130 é apresentado em comunicação com a CPU 1100 e com o controlador de memória 1102 via um barramento (por exemplo, barramento PCI) e serve como um hospedeiro para os controladores periféricos 10041 até 10044. A interface de rede 1132 proporciona acesso a uma rede (por exemplo, Internet, rede doméstica, etc.) e pode ser qualquer um dentre uma ampla variedade de vários componente de interface com uso de fios ou sem uso de fios, incluindo uma placa Ethernet, um modem, um cartão de acesso sem uso de fios, um módulo Bluetooth, um modem a cabo, dentre outros.
[00115] Na implementação representada na Figura 7, o console 1002 inclui uma submontagem de suporte de controlador 1140 para suportar os quatro controladores 10041 até 10044. A submontagem de suporte de controlador 1140 inclui quaisquer componentes de hardware e de software para suportar operação com uso de fios e sem uso de fios com um dispositivo de controle externo, tal como, por exemplo, um controlador de mídia e jogo. Uma submontagem de E/S do painel frontal 1142 suporta as várias funcionalidades do botão de ativação 1012, do botão de ejeção 1014, bem como de quaisquer LEDs (diodos de emissão de luz) ou outros indicadores expostos na superfície externa do console 1002. As submontagens 1140 e 1142 estão em comunicação com o módulo 1114 via uma ou mais montagens de cabo 1144. Em outras implementações, o console 1002 pode incluir submontagens de controlador adicionais. A implementação ilustrada também apresenta uma interface ótica de E/S 1135 que é configurada para enviar e receber sinais que podem ser comunicados para o módulo 1114.
[00116] As MUs 10401 e 10402 são ilustradas como sendo conectáveis com as portas de MU "A" 10301 e "B" 10302, respectivamente. MUs Adicionais (por exemplo, MUs 10403 até 10406) ao ilustradas coáveis com os controladores 10041 e 10043, isto é, duas MUs para cada controlador. Os controladores 10042 e 10044 também podem ser configurados para receber MUs. Cada MU 1040 oferece armazenamento adicional no qual jogos eletrônicos interativos, parâmetros de jogo, e outros dados podem ser armazenados. Em algumas implementações, os outros dados podem incluir qualquer um dentre um componente de jogo digital, um aplicativo de jogo executável, um conjunto de instruções para expandir um aplicativo de jogo, e um arquivo de mídia. Quando inserida dentro do console 1002 ou de um controlador, a UM 1040 pode ser acessada pelo controlador de memória 1102.
[00117] Um módulo de fonte de alimentação do sistema 1150 proporciona energia para os componentes do sistema de jogo 1000. Uma ventoinha resfria o sistema de circuitos dentro do console 1002.
[00118] Um aplicativo 1160 compreendendo instruções legíveis por processador é armazenado na unidade de disco rígido 1108. Quando o console 1002 é ligado, várias partes do aplicativo 1160 são carregadas dentro da RAM 1106, e/ou das caches 1110 e 1112, para execução na CPU 1100, onde o aplicativo 1160 é um exemplo. Vários aplicativos podem ser armazenados na unidade de disco rígido 1108 para execução na CPU 1100. Em uma concretização, o aplicativo 1160 corresponde a um dos aplicativos 211 até 213 apresentados na Figura 2, como descrito neste documento.
[00119] O console 1002 também é apresentado como incluindo um subsistema de comunicação 1170 configurado para comunicativamente acoplar o console 1002 com um ou mais outros dispositivos de computação (por exemplo, outros consoles). O subsistema de comunicação 1170 pode incluir dispositivos de comunicação com uso de fios e/ou sem uso de fios compatíveis com um ou mais diferentes protocolos de comunicação. Como exemplos não limitativos, o subsistema de comunicação 1170 pode ser configurado para comunicação via uma rede telefônica sem uso de fios, ou via uma rede de área local ou de grande distância com uso de fios ou sem uso de fios. Em algumas concretizações, o subsistema de comunicação 1170 pode permitir que o console 1002 envie e/ou receba mensagens para e/ou a partir de outros dispositivos via uma rede tal como a Internet. Em concretizações específicas, o subsistema de comunicação 1170 pode ser utilizado para se comunicar com um coordenador e/ou com outros dispositivos de computação, para enviar solicitações de transferência, e para efetuar transferência e carregamento de conteúdo digital. Mais geralmente, o subsistema de comunicação 1170 pode permitir ao console 1002 participar nas comunicações ponto a ponto.
[00120] O sistema de jogo e mídia 1000 pode ser operado como um sistema independente por simplesmente conectar o sistema com o vídeo 1050 (Figura 6), com uma televisão, com um projetor de vídeo, ou com outro dispositivo de vídeo. Neste modo independente, o sistema de jogo e vídeo 1000 permite que um ou mais jogadores joguem jogos eletrônicos interativos, ou desfrutem de mídia digital, por exemplo, por assistir filmes, ou escutar música. Entretanto, com a integração da conectividade de banda larga feita disponível através da interface de rede 132, ou mais geralmente, pelo subsistema de comunicação 1170, o sistema de jogo e mídia 1000 adicionalmente pode ser operado como um participante de uma comunidade de jogo em rede maior, tal como uma rede ponto a ponto.
[00121] O console descrito acima 1002 é apenas um exemplo de um dispositivo de computação 107 discutido acima com referência à Figura 1 e várias outras Figuras. Como foi explicado acima, existem vários outros tipos de dispositivos de computação com os quais as concretizações descritas neste documento podem ser utilizadas.
[00122] A Figura 8 é um diagrama de blocos de uma concretização de um dispositivo de computação 1800 (o qual pode corresponder ao dispositivo de computação 107 apresentado na Figura 1) que pode hospedar pelo menos alguns dos componentes de software ilustrados nas Figuras 1 a 3. Em sua configuração mais básica, o dispositivo de computação 1800 tipicamente inclui uma ou mais unidades / núcleos de processamento 1802 incluindo uma ou mais CPUs e uma ou mais GPUs. O dispositivo de computação 1800 também inclui a memória do sistema 1804. Dependendo da configuração e do tipo exatos do dispositivo de computação, a memória do sistema 1804 pode incluir memória volátil 1805 (tal como RAM), memória não volátil 1807 (tal como ROM, memória flash, etc.) ou alguma combinação das duas. Esta configuração mais básica é ilustrada na Figura 8 pela linha tracejada 1806. Adicionalmente, o dispositivo de computação 1800 também pode possuir aspectos / funcionalidade adicional. Por exemplo, o dispositivo de computação 1800 também pode incluir armazenamento adicional (removível e/ou não removível) incluindo, mas não limitado a discos magnéticos ou óticos ou fita. Tal armazenamento adicional é ilustrado na Figura 8 pelo armazenamento removível 1808 e pelo armazenamento não removível 1810.
[00123] Em uma concretização, o dispositivo de computação 1800 é utilizando ao testar se um aplicativo transfere informação sensível para um dispositivo de computação externo. Em uma concretização, o dispositivo de computação 1800 é utilizado durante um processo de certificação ou de verificação de um aplicativo. Em uma concretização, os componentes de software como descritos neste documento são armazenados na memória do sistema e executados pelas unidades / núcleos de processamento 1802.
[00124] O dispositivo de computação 1800 também pode conter conexão (conexões) de comunicações 1812 tal como uma ou mais interfaces de rede e transceptores que permitem ao dispositivo se comunicar com outros dispositivos. O dispositivo de computação 1800 também pode possuir dispositivo(s) de entrada 1814 tal como teclado, mouse, caneta, dispositivo de entrada de voz, dispositivo de entrada de toque, dispositivo de entrada de gesto, etc. O dispositivo(s) de saída 1816 tal como um vídeo, alto-falantes, impressora, etc., também pode estar incluído. Estes dispositivos são bem conhecidos na técnica de modo que eles não são discutidos em detalhes neste documento.
[00125] Nas concretizações, caminhos de sinal ilustrados e descritos são meios que transferem um sinal, tal como uma interconexão, elemento de condução, contato, pino, região em um substrato semicondutor, fio, traços de metal / linha de sinal, ou condutor fotoelétrico, de forma única ou em combinação. Em uma concretização, vários caminhos de sinal podem substituir um único caminho de sinal ilustrado nas figuras e um único caminho de sinal pode substituir vários caminhos de sinal ilustrados nas figuras. Nas concretizações, um caminho de sinal pode incluir um barramento e/ou conexão ponto a ponto. Em uma concretização, um caminho de sinal inclui linhas de sinal de controle e de dados. Ainda em outras concretizações, os caminhos de sinal são unidirecionais (sinais que percorrem em uma direção) ou bidirecionais (sinais que percorrem em duas direções) ou combinações de ambas as linhas de sinal unidirecionais e linhas de sinal bidirecionais.
[00126] A descrição detalhada precedente do sistema da invenção foi apresentada para propósito de ilustração e descrição. Não se pretende que ela seja exaustiva ou que limite o sistema da invenção à forma precisa revelada. Várias modificações e variações são possíveis de acordo com as instruções acima. As concretizações descritas foram escolhidas de modo a melhor explicar os princípios do sistema da invenção e sua aplicação prática para desse modo permitir aos versados na técnica melhor utilizar o sistema da invenção em várias concretizações e com várias modificações à medida que sejam adequadas para o uso particular contemplado. É pretendido que o escopo do sistema da invenção seja definido pelas reivindicações anexas neste documento.

Claims (20)

1. Método para testar um aplicativo, o método caracterizado pelo fato de compreender as etapas de: receber uma solicitação do aplicativo por informação; proporcionar informação substituta, substituir temporariamente a informação, como a informação para o aplicativo utilizando um calço parar interceptar chamadas de aplicativo para interfaces de programação de aplicativo (APIs) que retornam a informação; receber uma solicitação do aplicativo para emitir informação de aplicativo para um dispositivo de computação externo; inspecionar a informação de aplicativo antes da criptografia por interceptar tráfego de rede do aplicativo utilizando outro calço durante a execução do aplicativo para determinar se a informação substituta é incluída na informação de aplicativo; e emitir a informação de aplicativo, depois de substituir a informação substituta, para o dispositivo de computação externo depois do teste indicar que o aplicativo pretende transferir a informação de aplicativo.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método é executado pelo menos parcialmente por pelo menos um processador que executa um sistema operacional e o aplicativo armazenado em uma memória em um dispositivo de computação.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a informação é informação sensível.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o método é executado durante um processo de certificação ou um processo de verificação do aplicativo.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende obter uma indicação de consentimento de uma informação de usuário para o dispositivo de computação externo.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que receber a solicitação do aplicativo por informação inclui o aplicativo chamando uma primeira interface de programação de aplicativo e receber a solicitação do aplicativo para emitir inclui o aplicativo chamando uma segunda interface de programação de aplicativo.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que a inspeção inclui pesquisar uma memória temporária que armazena a informação de aplicativo para ser emitida para o dispositivo de computação externo para a informação substituta na informação de aplicativo.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que a informação substituta é selecionada de uma dentre informação forjada e informação gravada.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a recepção e a determinação são pelo menos parcialmente executadas por um sistema operacional, em que o aplicativo inclui um jogo eletrônico interativo, e em que a informação inclui um sinal de vídeo.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o dispositivo de computação inclui uma câmera para obter o sinal de vídeo.
11. Aparelho, caracterizado pelo fato de compreender: pelo menos uma câmera para obter um sinal de vídeo; pelo menos um processador; e pelo menos uma memória legível por processador para armazenar um aplicativo que possui instruções legíveis por processador e um endereço de rede para um dispositivo de computação, e a pelo menos uma memória legível por processador para armazenar um sistema operacional que pode permitir ao aplicativo transferir pelo menos uma parte do sinal de vídeo para o dispositivo de computação no endereço de rede, em que o pelo menos um processador executa as instruções legíveis por processador do sistema operacional e do aplicativo para: receber, pelo sistema operacional, uma solicitação do aplicativo pelo sinal de vídeo, proporcionar um sinal de vídeo substituto que compreende pelo menos um dentre informação falsa gravada e informação forjada, pelo sistema operacional, para o aplicativo, receber, pelo sistema operacional, uma solicitação do aplicativo para emitir informação de aplicativo para um dispositivo de computação externo; determinar se o aplicativo emite a informação de aplicativo antes de obter um consentimento do usuário durante a execução do aplicativo por identificar o aplicativo como um aplicativo confiável ou um aplicativo não confiável com base em uma lista de Autorização de Segurança da Rede (NSAL), que inclui endereços de rede autorizados que o aplicativo pode se comunicar quando em execução, e em resposta a identificar o aplicativo como não confiável: inspecionar, pelo sistema operacional, a informação de aplicativo para determinar se o sinal de vídeo substituto é incluído na informação de aplicativo; e emitir, pelo sistema operacional, a informação de aplicativo para o dispositivo de computação externo, quando um indicativo de consentimento é obtido por um usuário.
12. Aparelho, de acordo com a reivindicação 11, caracterizado pelo fato de que o aparelho ainda inclui uma memória temporária de tráfego para armazenar a informação de aplicativo e o sistema operacional inspeciona a informação de aplicativo armazenada na memória temporária de tráfego para determinar se o sinal de vídeo substituto é armazenado na informação de aplicativo.
13. Aparelho, de acordo com a reivindicação 12, caracterizado pelo fato de que o aparelho é incluído em um console de jogo e o aplicativo é um jogo eletrônico interativo.
14. Aparelho, de acordo com a reivindicação 11, caracterizado pelo fato de que a solicitação do aplicativo pelo sinal de vídeo inclui uma chamada para uma interface de programação de aplicativo para recuperar o sinal de vídeo e a solicitação do aplicativo para emitir informação de aplicativo para o dispositivo de computação externo inclui uma chamada para uma interface de programação de aplicativo para emitir a informação de aplicativo para o endereço de rede do dispositivo de computação.
15. Aparelho, de acordo com a reivindicação 11, caracterizado pelo fato de que o pelo menos um processador executa as instruções legíveis por processador do sistema operacional e do aplicativo de modo que o indicativo de consentimento ocorre antes do aplicativo ser transferido para o dispositivo de computação externo.
16. Memória legível por processador tendo um método caracterizada pelo fato de compreender: receber informação sensível; receber uma solicitação pela informação sensível de um aplicativo por chamar uma primeira interface de programação de aplicativo que retorna a informação sensível; substituir a informação sensível com informação substituta por interceptar a chamada para a primeira interface de programação do aplicativo utilizando um calço; proporcionar a informação substituta como a informação sensível para o aplicativo; receber uma solicitação do aplicativo para emitir informação de aplicativo para um dispositivo de computação externo em um endereço de rede por chamar uma segunda interface de programação do aplicativo; pesquisar a informação de aplicativo, antes da criptografia, para determinar se a informação substituta é incluída na informação de aplicativo utilizando outro calço para interceptar a chamada na segunda interface de programação do aplicativo; e emitir a informação de aplicativo em um formato criptografado para o dispositivo de computação externo no endereço de rede.
17. Memória legível por processador, de acordo com a reivindicação 16, caracterizada pelo fato de que a informação sensível inclui pelo menos um quadro de um sinal de vídeo e a informação sensível é um quadro de outro sinal de vídeo.
18. Memória legível por processador, de acordo com a reivindicação 17, caracterizada pelo fato de que receber uma solicitação pela informação sensível de um aplicativo inclui a primeira interface de programação do aplicativo para recuperar a informação sensível, e receber uma solicitação do aplicativo para emitir informação de aplicativo para o dispositivo de computação externo no endereço de rede inclui a segunda interface de programação do aplicativo para emitir a informação de aplicativo para o dispositivo de computação externo no endereço de rede.
19. Memória legível por processador, de acordo com a reivindicação 18, caracterizada pelo fato de que o método ainda compreende receber consentimento de um usuário antes de transferir a informação de aplicativo.
20. Memória legível por processador, de acordo com a reivindicação 19, caracterizada pelo fato de que a pesquisa é executada por um inspetor de rede.
BR112016004399-5A 2013-09-06 2014-09-03 Método para testar um aplicativo, aparelho e memória legível por processador BR112016004399B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/019,978 US9645860B2 (en) 2013-09-06 2013-09-06 Verification that particular information is transferred by an application
US14/019,978 2013-09-06
PCT/US2014/053767 WO2015034851A1 (en) 2013-09-06 2014-09-03 Verification that particular information is transferred by an application

Publications (2)

Publication Number Publication Date
BR112016004399A8 BR112016004399A8 (pt) 2020-02-11
BR112016004399B1 true BR112016004399B1 (pt) 2022-09-13

Family

ID=51585182

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016004399-5A BR112016004399B1 (pt) 2013-09-06 2014-09-03 Método para testar um aplicativo, aparelho e memória legível por processador

Country Status (11)

Country Link
US (2) US9645860B2 (pt)
EP (1) EP3042336B1 (pt)
JP (1) JP6356248B2 (pt)
KR (1) KR102281028B1 (pt)
CN (1) CN105580025B (pt)
AU (1) AU2014315395B2 (pt)
BR (1) BR112016004399B1 (pt)
CA (1) CA2922363C (pt)
MX (1) MX356480B (pt)
RU (1) RU2679222C2 (pt)
WO (1) WO2015034851A1 (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645860B2 (en) 2013-09-06 2017-05-09 Microsoft Technology Licensing, Llc Verification that particular information is transferred by an application
US9276938B2 (en) 2013-11-27 2016-03-01 General Electric Company Cross-enterprise workflow
US9747415B2 (en) * 2013-11-27 2017-08-29 General Electric Company Single schema-based RIS/PACS integration
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
JP2021018745A (ja) * 2019-07-23 2021-02-15 日立オムロンターミナルソリューションズ株式会社 カードリーダ、カードリーダの制御方法および現金自動機

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
WO2002025415A2 (en) * 2000-09-22 2002-03-28 Edc Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US8677505B2 (en) * 2000-11-13 2014-03-18 Digital Doors, Inc. Security system with extraction, reconstruction and secure recovery and storage of data
US8150922B2 (en) * 2002-07-17 2012-04-03 Research In Motion Limited Voice and text group chat display management techniques for wireless mobile terminals
WO2004015952A2 (de) * 2002-08-06 2004-02-19 Brainshield Technologies Inc. Vorrichtung zum kopiergeschützten verteilen elektronischer dokumente
JP2005045587A (ja) * 2003-07-23 2005-02-17 Nec Saitama Ltd 携帯情報端末装置、及び、この装置における表示制御方法
KR20070038462A (ko) * 2004-05-12 2007-04-10 퓨전원 인코포레이티드 향상된 접속 인식 시스템
EP1779345A2 (en) * 2004-07-29 2007-05-02 Intelli7, Inc. System and method of characterizing and managing electronic traffic
US8041190B2 (en) * 2004-12-15 2011-10-18 Sony Corporation System and method for the creation, synchronization and delivery of alternate content
US20070263865A1 (en) * 2005-07-01 2007-11-15 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Authorization rights for substitute media content
US7788328B2 (en) 2005-11-10 2010-08-31 Microsoft Corporation Cross-forest sharing
CN101064604B (zh) * 2006-04-29 2012-04-18 西门子公司 远程访问方法、系统及设备
US7890612B2 (en) * 2006-05-08 2011-02-15 Electro Guard Corp. Method and apparatus for regulating data flow between a communications device and a network
US20080227548A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Secured cross platform networked multiplayer communication and game play
US10356366B2 (en) * 2007-05-31 2019-07-16 Sony Interactive Entertainment America Llc System and method for taking control of a system during a commercial break
US20100229214A1 (en) 2009-03-04 2010-09-09 Telefonaktiebolaget Lm Ericsson (Publ) Method and node for communications enhanced with temporary sharing of personal information in a communication network
CN101668157B (zh) * 2009-09-24 2011-09-21 中兴通讯股份有限公司 用于视频通话中隐私保护的方法、应用服务器及系统
CN102104766A (zh) * 2009-12-18 2011-06-22 深圳富泰宏精密工业有限公司 视频通话中的隐私保护系统及方法
KR20120017218A (ko) 2010-08-18 2012-02-28 주식회사 팬택 Sns 기반의 이동 단말기 및 이를 이용한 통신 방법
US9930295B2 (en) * 2010-11-18 2018-03-27 Verint Systems Inc.. Software, systems, and methods for video recording of a transaction involving protected data
KR101714534B1 (ko) 2010-12-06 2017-03-09 삼성전자주식회사 휴대 단말기의 사생활 보호 기능 제공 방법 및 장치
US8763080B2 (en) 2011-06-07 2014-06-24 Blackberry Limited Method and devices for managing permission requests to allow access to a computing resource
US8650550B2 (en) 2011-06-07 2014-02-11 Blackberry Limited Methods and devices for controlling access to computing resources
JP5828457B2 (ja) * 2012-01-16 2015-12-09 Kddi株式会社 Api実行制御装置およびプログラム
CN102609660B (zh) * 2012-02-03 2015-09-16 北京奇虎科技有限公司 一种计算机视频设备隐私保护方法和系统
US8275358B1 (en) 2012-03-01 2012-09-25 MacroPoint LLC Providing notice and receiving consent to obtain location information of a mobile device
US9317721B2 (en) 2012-10-31 2016-04-19 Google Inc. Privacy aware camera and device status indicator system
US9223941B2 (en) 2013-03-15 2015-12-29 Google Inc. Using a URI whitelist
US9432627B2 (en) 2013-09-06 2016-08-30 Microsoft Technology Licensing, Llc Restricting information requested by an application
US9645860B2 (en) 2013-09-06 2017-05-09 Microsoft Technology Licensing, Llc Verification that particular information is transferred by an application

Also Published As

Publication number Publication date
AU2014315395B2 (en) 2019-05-30
US20170206156A1 (en) 2017-07-20
RU2679222C2 (ru) 2019-02-06
AU2014315395A1 (en) 2016-02-25
CA2922363C (en) 2021-10-26
CN105580025B (zh) 2019-05-17
MX2016002839A (es) 2016-06-17
US10437715B2 (en) 2019-10-08
CN105580025A (zh) 2016-05-11
KR20160048811A (ko) 2016-05-04
US9645860B2 (en) 2017-05-09
JP6356248B2 (ja) 2018-07-11
US20150074689A1 (en) 2015-03-12
WO2015034851A1 (en) 2015-03-12
BR112016004399A8 (pt) 2020-02-11
EP3042336A1 (en) 2016-07-13
CA2922363A1 (en) 2015-03-12
RU2016107749A3 (pt) 2018-07-04
EP3042336B1 (en) 2020-04-15
KR102281028B1 (ko) 2021-07-22
MX356480B (es) 2018-05-30
JP2016534469A (ja) 2016-11-04
RU2016107749A (ru) 2017-09-07

Similar Documents

Publication Publication Date Title
US10437715B2 (en) Verification that particular information is transferred by an application
US9979712B2 (en) Synchronizing authentication sessions between applications
KR102207598B1 (ko) 이기종 메모리의 동적 관리 기법
US10740466B1 (en) Securing interfaces of a compute node
ES2404807T3 (es) Aparato de reproducción, LSI de sistema, y método de inicialización
US9276741B2 (en) Content encryption key management
TWI725709B (zh) 資料儲存方法、裝置及設備
US11736741B2 (en) Ultra high-speed low-latency network storage
TWI734314B (zh) 用於將數位指紋提供至主機裝置之系統、方法及非暫時性電腦可讀媒體
EP3042489B1 (en) Restricting information requested by an application
JP5380298B2 (ja) クローズドシステムへのコンテンツの転送
US11128617B2 (en) Token based secure multiparty computing framework using a restricted operating environment

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 03/09/2014, OBSERVADAS AS CONDICOES LEGAIS