BRPI0400061B1 - método, estrutura de dados de licença, e dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes - Google Patents

método, estrutura de dados de licença, e dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes Download PDF

Info

Publication number
BRPI0400061B1
BRPI0400061B1 BRPI0400061A BRPI0400061A BRPI0400061B1 BR PI0400061 B1 BRPI0400061 B1 BR PI0400061B1 BR PI0400061 A BRPI0400061 A BR PI0400061A BR PI0400061 A BRPI0400061 A BR PI0400061A BR PI0400061 B1 BRPI0400061 B1 BR PI0400061B1
Authority
BR
Brazil
Prior art keywords
component
type
hardware
identity
stored
Prior art date
Application number
BRPI0400061A
Other languages
English (en)
Inventor
Aiden T Hughes
Caglar Gunyaki
Pratul Dublish
Original Assignee
Microsoft Corp
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 Corp, Microsoft Technology Licensing Llc filed Critical Microsoft Corp
Publication of BRPI0400061A publication Critical patent/BRPI0400061A/pt
Publication of BRPI0400061B1 publication Critical patent/BRPI0400061B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/02Constructional features of telephone sets
    • H04M1/04Supports for telephone transmitters or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R1/00Details of transducers, loudspeakers or microphones
    • H04R1/10Earpieces; Attachments therefor ; Earphones; Monophonic headphones
    • H04R1/1033Cables or cables storage, e.g. cable reels
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2117User registration
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2135Metering
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2137Time limited access, e.g. to a computer or data

Abstract

"sistemas e métodos para a provisão de um id de hardware flexivelmente tolerante com base no tempo e peso". os sistemas e métodos para a implementação de um id de hardware com flexibilidade com base no tempo e peso utilizam um id de hardware (um identificador hwid) que inclui a identificação de informações sobre os componentes do hardware. quando o software é executado, um identificador hwid corrente é gerado. quando o identificador hwid corrente é comparado a um identificador hwid armazenado a fim de determinar se os dois identificadores hwid correspondem, um vetor de tempo e um vetor de peso são usados na comparação. um escore de correspondência de execução é mantido das correspondências. para cada componente de hardware, o vetor de peso indica o peso dado a uma correspondência correta do valor mapeado para o componente de hardware. por exemplo, se o valor de peso para o componente de hardware é de três, e existe uma correspondência, neste caso o total de execução é aumentado em três. para cada componente de hardware, o vetor de tempo pode indicar um período de expiração após o qual uma troca do componente pode ser permitida. por exemplo, se o período de expiração para o componente é de um ano, e um ano se passou desde a ativação, o total de execução pode ser aumentado mesmo que as informações do componente no identificador hwid não correspondam às informações do componente corrente.

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO, ESTRUTURA DE DADOS DE LICENÇA, E DISPOSITIVO DE COMPUTAÇÃO PARA PERMITIR A VALIDAÇÃO DE TERMOS DE LICENCIAMENTO DE SOFTWARE PARA UM PRODUTO DE SOFTWARE PARA USO EM UM SISTEMA COMPUTACIONAL COMPREENDENDO UM OU MAIS COMPONENTES”.
CAMPO DA INVENÇÃO
[001] A presente invenção refere-se a sistemas e métodos para a provisão de informações de identificação para um sistema computacional e para a avaliação se o sistema computacional corresponde a uma versão salva de informações de identifcação. Mais particularmente, a presente invenção se refere a sistemas e métodos para a provisão de um ID de hardware para um sistema computacional com base em informações de identificação do sistema computacional que são flexíveis e tolerantes às mudanças normais que ocorrem ao se usar o sistema computacional.
FUNDAMENTOS DA INVENÇÃO
[002] O uso de um software é geral mente governado por uma licença de software, Uma vez que um software pode ser facilmente copiado depois de ser vendido, os usos de um software sem uma licença associada são difíceis de se impedir. Tais usos incluem a pirataria, na qual o software é ilicitamente replicado e cópias piratas são instaladas para uso em sistemas computacionais não licenciados. Além disso, um comprador de uma cópia não pirateada pode impropriamente usar o software fora do âmbito da licença associada. Por exemplo, um usuário pode instalar o software em mais sistemas computacionais do que o permitido de acordo com a licença.
[003] Embora as licenças ofereçam um caminho legal para recurso contra tais práticas, as mesmas podem ser difíceis de vigorarem na prática. Por conseguinte, existe a necessidade de outros meios para se reduzir a quantidade de uso de software fora dos termos da licença. Um método deste se baseia na criação de um identificador para o sistema computacional de um usuário que foi licenciado a usar um software. A Patente U.S. N° 6.243.468, intitulada “Software Anti-Piracy System That Adapts to Hardware Upgrades” e o Pedido de Patente U.S. publicado N° 20010044782 detalham este método.
[004] Os sistemas computacionais incluem tipicamente várias peças de hardware, incluindo unidades de disco, unidades de CDROM, e processadores. Cada um destes componentes de hardware possuem identificadores (números ou nomes de série) que podem ser acessados pelo sistema, por exemplo, para a execução de uma chamada plug and play (PnP). Estes identificadores de componentes podem ser combinados de uma maneira predeterminada de modo a criar um identificador de hardware (HWID), o qual pode ser usado para identificar um sistema computacional em particular.
[005] De forma significativa, o identificador HWID pode ser empregado como parte de ou em combinação com uma licença de software a fim de garantir que o software que foi licenciado para uso em um sistema computacional específico seja usado somente naquele sistema computacional. Em particular, o software tem uma licença especificando que um identificador HWID só executará em um sistema computacional se, em um tempo de execução, o identificador HWID computado para o sistema computacional corresponde ao identificador HWID especificado na licença de software.
[006] No entanto, quando o usuário de um sistema computacional adiciona, subtrai, ou troca os componentes do sistema, por exemplo, para fins de conserto ou atualização, o identificador HWID muda. Cada componente novo ou trocado terá um novo identificador de componente. Sendo assim, quando o identificador HWID para o sistema é computado, um novo identificador de componente fará com que o identifi- cador HWID se modifique. Isto traz problemas quando o usuário recebe uma licença para um software que especifica o identificador HWID para uma versão anterior de seu sistema computacional.
[007] Por conseguinte, é conhecido aceitar um identificador HWID como uma correspondência substancial quando comparado a um identificador HWID recém calculado e permitir que o usuário execute o software. Por exemplo, a Patente U.S. N° 6.243.468 acima mencionada apresenta um caso no qual cinco identificadores de componentes são incluídos no identificador HWID, e se quaisquer dentre quatro dos mesmos se correspondem, o software produto consegue operar no sistema computacional.
[008] Não tratado na técnica anterior é o fato de que certos componentes podem ser trocados mais freqüentemente que outros. Da mesma forma também não é tratada a utilidade de se ter exigências de correspondência de sistema computacional menos incisivas para a licença conforme o tempo passa, uma vez que o valor do software pode diminuir com o tempo. Um sistema de licença com base no identificador HWID que trata destes fatos proveria uma segurança maior e permitiría uma segurança dinâmica com o passar do tempo.
[009] Tendo em vista a situação acima mencionada, ocorre a necessidade de um sistema que permita que um identificador HWID seja usado na identificação e vinculação de uma instância licenciada de software para um sistema computacional, e ao mesmo tempo tolerar mudanças no sistema computacional de um usuário legitimado com a flexibilidade requerida para acomodar as mudanças de sistema de hardware e se adaptar à passagem do tempo.
SUMÁRIO DA INVENÇÃO
[0010] Tendo em vista o acima, a presente invenção provê sistemas e métodos para a provisão de um identificador HWID que permaneça válido mesmo que a configuração do sistema seja alterada.
[0011] Em uma modalidade, quando o software é ativado, o identificador HWID do sistema é calculado. O código de ativação de produto no software ou em qualquer lugar do sistema consulta os componentes de hardware existentes a fim de obter informações com relação a estes componentes. Por exemplo, a placa de rede pode ser consultada de modo a determinar o endereço do controle MAC (controle de acesso de meio). As informações com relação aos componentes de hardware de cada tipo de componente de hardware são manipuladas numericamente. Os valores manipulados são concatenados em um identificador HWID.
[0012] O identificador HWID calculado na ativação é incluído em um arquivo de dados de licença. São também incluídos com o identificador HWID de ativação um vetor de tempo e um vetor de peso para cada componente de hardware. Uma contagem limite é igualmente incluída no arquivo de dados de licença. Este arquivo de dados de licença deve ser avaliado cada vez que o software é usado. Quando a licença requer a verificação do sistema computacional, o identificador HWID do sistema é reavaliado e o identificador HWID recém calculado é comparado ao identificador HWID de ativação.
[0013] Quando o identificador HWID recém calculado é comparado ao identificador HWID de ativação no sentido de determinar se os dois identificadores HWID correspondem, um vetor de tempo e um vetor de peso são usados na comparação. O valor de vetor de tempo para um componente determina se o componente será considerado na determinação se o identificador HWID recém calculado substancialmente corresponde ao identificador HWID de ativação. O valor de vetor de peso para um componente determina que peso uma correspondência para aquele componente receberá na determinação se o identificador HWID recém calculado substancialmente corresponde ao identificador HWID de ativação.
[0014] Outras características e modalidades da presente invenção são descritas abaixo. BREVE DESCRIÇÃO DOS DESENHOS4 [0015] O sistema e métodos para a provisão de uma manipulação antecipada com determinação de média e visibilidade de acordo com a presente invenção são ainda descritos com referência aos desenhos em anexo, nos quais: A Figura 1 é um diagrama de bloco que representa um sistema computacional não limitante exemplar no qual a presente invenção pode ser implementada; A Figura 2 é um diagrama de bloco representando os dados de licença em uma modalidade da presente invenção;
A Figura 3 é um diagrama de bloco representando um método de comparação de cada identidade de componente armazenado a uma identidade de componente corrente, usando um vetor de peso; e A Figura 4 é um diagrama de bloco representando um método de comparação de cada identidade de componente armazenado a uma identidade de componente corrente, usando um vetor de tempo. DESCRIÇÃO DETALHADA DA INVENÇÃO VISÃO GERAL
[0016] Em uma modalidade, um ID de hardware corrente (HWID) é calculado. Para cada tipo de componente dentre um conjunto de tipos de componente a ser considerado, os componentes daquele tipo são consultados. Em uma modalidade, cada resultado é manipulado numericamente. Os valores resultantes compreendem o HWID corrente.
[0017] Em uma modalidade, um arquivo de licença associado ao software armazena um identificador HWID de ativação, um vetor de tempo, um vetor de peso, e uma contagem limite. A fim de permitir o uso do software, o identificador HWID corrente para o sistema computacional deve substancial mente corresponder ao identificador HWID de ativação. O vetor de tempo, o vetor de peso, e a contagem limite são usados na determinação se uma correspondência substancialmente ocorre.
[0018] A fim de determinar se o identificador HWID corrente substancialmente corresponde ao identificador HWID de ativação, para cada tipo de componente, cada valor manipulado armazenado para os componentes daquele tipo é comparado a um valor manipulado para cada componente corrente daquele tipo. Em uma modalidade, uma contagem de correspondência é calculada para a comparação geral. Qualquer correspondência indica que um componente que existia no sistema no momento que o identificador HWID armazenado foi calculado ainda existe no sistema. Quando tal correspondência é encontrada, a contagem de correspondência para a comparação é incrementada. Se a contagem de correspondência for maior que ou igual à contagem limite, o identificador HWID corrente substancialmente corresponde ao identificador HWID de ativação.
[0019] Para cada tipo de componente, o vetor de peso indica o peso que uma correspondência daquele tipo de componente deve ser acordada. Quando a contagem de correspondência é incrementada devido a uma correspondência para um tipo de componente, a contagem de correspondência é incrementada pelo valor de peso para aquele tipo de componente.
[0020] Um vetor de tempo é também associado ao identificador HWID armazenado. Para cada tipo de componente, o vetor de tempo pode indicar um período de expiração. Depois de o período de expiração ter passado, mesmo que nenhuma correspondência seja encontrada para um componente, a contagem de correspondência é incrementada pelo valor de peso. Desta maneira, um sistema de identificador HWID é provido, o qual pode oferecer diferentes pesos para diferentes componentes e que é cada vez mais flexivelmente tolerante às mudanças de hardware em um sistema computacional. Em uma modalidade alternativa, apenas o vetor de tempo é usado. Em uma outra modalidade alternativa, apenas o vetor de peso é usado.
DISPOSITIVO DE COMPUTAÇÃO EXEMPLAR
[0021] A Figura 1 e a apresentação a seguir pretendem prover uma breve descrição geral de um ambiente de computação adequado no qual a presente invenção pode ser implementada. Deve-se entender, no entanto, que dispositivos de computação portáteis, manuais ou outros dispositivos de computação e objetos de computação de todos os tipos são contemplados para uso com relação à presente invenção, conforme descrito acima. Sendo assim, embora um computador de uso geral seja descrito abaixo, este é apenas um exemplo, e a presente invenção pode ser implementada com outros dispositivos de computação, como, por exemplo, um cliente magro com uma interoperabilidade e interação de rede / barramento. Assim sendo, a presente invenção pode ser implementada em um ambiente de serviços conectados por enlaces de rede nos quais muito poucos ou mínimos recursos de cliente são implicados, por exemplo, um ambiente de rede no qual o dispositivo de cliente se presta somente como uma interface para a rede / barramento, como, por exemplo, um objeto colocado em um instrumento, ou outros dispositivos e objetos de computação também. Em essência, onde quer que os dados possam ser armazenados ou a partir de onde os dados podem ser recuperados é um ambiente desejável ou adequado para operação de acordo com a presente invenção.
[0022] Embora não necessário, a presente invenção pode ser implementada via um sistema operacional, para uso por um programador de serviços para um dispositivo ou objeto, e/ou incluído dentro do software de aplicação que opera de acordo com a presente invenção. O software pode ser descrito no contexto geral das instruções executáveis em computador, como, por exemplo, módulos de programa, que são executados por um ou mais computadores, como, por exemplo, estações de trabalho de cliente, servidores ou outros dispositivos. De modo geral, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados ou coisa do gênero que realizam tarefas particulares ou implementam tipos de dados abstratos particulares. Tipicamente, a funcionalidade dos módulos de programa pode ser combinada ou distribuída conforme desejado em várias modalidades. Além disso, os versados na técnica apreciarão que a presente invenção pode ser praticada com outras configurações de computador. Outros sistemas de computação bem conhecidos, ambientes e/ou configurações que podem ser adequados para uso com a presente invenção incluem, não se limitando, porém, a computadores pessoais (PCs), máquinas contadoras automatizadas, computadores de servidor, dispositivos manuais ou laptops, sistemas multi-processadores, sistemas com base em microprocessadores, equipamentos eletrônicos de consumidor programáveis, PCs de rede, instrumentos, lâmpadas, elementos de controle ambiental, minicomputadores, computadores de grande porte ou coisa do gênero. A presente invenção pode ainda ser praticada em ambientes de computação distribuídos, nos quais tarefas são realizadas por dispositivos de processamento remoto que são enlaçados através de uma rede de comunicação / barramento ou outro meio de transmissão de dados. Em um ambiente de computação distribuído, os módulos de programa podem se localizar tanto em um meio de armazenagem de computador local como em um meio de armazenagem de computador remoto, incluindo dispositivos de armazenagem de memória, e os nós de cliente podem, por sua vez, se comportarem como nós de servidor.
[0023] A Figura 1, assim, ilustra um exemplo de um ambiente de sistema de computação adequado 100 no qual a presente invenção pode ser implementada, embora, conforme feito claro acima, o ambi- ente de sistema de computação 100 é apenas um exemplo de um ambiente de computação adequado e não pretende sugerir nenhuma limitação quanto ao âmbito de uso ou à funcionalidade da presente invenção. Nem o ambiente de computação 100 deve ser interpretado como tendo qualquer dependência ou exigência com relação a qualquer um ou combinação de componentes ilustrados no ambiente operacional exemplar 100.
[0024] Com referência à Figura 1, um sistema exemplar para a implementação da presente invenção inclui um dispositivo de computação de uso geral na forma de um sistema computacional 110. Os componentes do sistema computacional 110 podem incluir, porém não se limitar a, uma unidade de processamento 120, uma memória de sistema 130, e a um barramento de sistema 121 que acopla os vários componentes de sistema, incluindo a memória de sistema à unidade de processamento 120. O barramento de sistema 121 pode ser qualquer um dentre os diversos tipos de estruturas de barramento, incluindo um barramento de memória ou uma controladora de memória, um barramento periférico, ou um barramento local que usa qualquer uma dentre uma variedade de arquiteturas de barramento. À guisa de exemplo, e não de limitação, tais arquiteturas incluem o barramento de Arquitetura de Padrão Industrial (ISA), o barramento de Arquitetura de Micro Canal (MCA), o barramento de Arquitetura ISA Aperfeiçoada (EISA), o barramento local da Associação de Padrões Eletrônicos de Vídeo (VESA), ou o barramento de Interconexão de Componentes Periféricos (PCI) (também conhecido como barramento Mezzanine).
[0025] O sistema computacional 110 tipicamente inclui uma variedade de meio legíveis em computador. Os meios legíveis em computador podem ser quaisquer meios disponíveis que podem ser acessados pelo sistema computacional 110 e incluem os meios voláteis ou não voláteis, os meios removíveis ou não removíveis. À guisa de exemplo, e não de limitação, os meios legíveis em computador podem compreender os meios de armazenagem em computador e os meios de comunicação. Os meios de armazenagem em computador incluem os meios voláteis ou não voláteis, removíveis ou não removíveis implementados em qualquer método ou tecnologia para a armazenagem de informações, como, por exemplo, as instruções legíveis em computador, as estruturas de dados, os módulos de programa ou outros dados. Os meios de armazenagem em computador incluem, não se limitando à, Memória de Acesso Aleatório (RAM), a Memória de Leitura (ROM), a Memória de Leitura Programável Eletricamente Apagável (EEPROM), a memória flash ou outra tecnologia de memória, a Memória de Leitura em Disco Compacto (CDROM), os discos versáteis digitais (DVD) ou outra armazenagem de disco ótico, os cassetes magnéticos, a fita magnética, a armazenagem de disco magnético ou outros dispositivos de armazenagem magnéticos, ou qualquer outro meio que pode ser usado para armazenar as informações desejadas e que podem ser acessadas pelo sistema computacional 110. Os meios de comunicação tipicamente incorporam instruções legíveis em computador, estruturas de dados, módulos de programa, ou outros dados em um sinal de dado modulado, como, por exemplo, uma onda portadora ou outro mecanismo de transporte e incluem quaisquer meios de liberação de informações. O termo “sinal de dados modulados” significa um sinal que tem um ou mais de suas características ajustadas ou modificadas de tal maneira a codificar informações no sinal. À guisa de exemplo, e não de limitação, os meios de comunicação incluem meios conectados, como, por exemplo, uma rede conectada ou uma conexão direta, ou meios sem fio, como, por exemplo, os meios acústicos, de RF, infravermelhos ou outros meios sem fio. As combinações de quaisquer dentre o acima devem ser também incluídas dentro do âmbito dos meios legíveis em computador.
[0026] A memória de sistema 130 inclui um meio de armazenagem em computador na forma de memória volátil e/ou de memória não volátil, como, por exemplo, a memória de leitura (ROM) 131 e a memória de acesso aleatório (RAM) 132. Um sistema de entrada / saída básico 133 (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre elementos dentro do sistema computacional 110, como, por exemplo, durante a partida, é tipicamente armazenado na memória ROM 131. A memória RAM 132 tipicamente contém dados e/ou módulos de programa que são imediatamente acessíveis à e/ou que são correntemente operados pela unidade de processamento 120. À guisa de exemplo, e não de limitação, a Figura 1 ilustra o sistema operacional 134, os programas de aplicação 135, outros módulos de programa 136, e os dados de programa 137.
[0027] O sistema computacional 110 pode também incluir outros meios de armazenagem em computador removíveis / não removíveis, voláteis / não voláteis. À guisa de exemplo somente, a Figura 1 ilustra uma unidade de disco rígido 141 que lê a partir de ou grava em um meio magnético não removível, não volátil, uma unidade de disco magnético 151 que lê a partir de ou grava em um disco magnético removível, não volátil 152, e uma unidade de disco ótico 155 que lê a partir de ou grava em um disco ótico removível, não volátil 156, como, por exemplo, um CD ROM ou outro meio ótico. Outros meios de armazenagem em computador removíveis / não removíveis, voláteis / não voláteis que podem ser usados no ambiente operacional exemplar incluem, porém não se limitam a, cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, memória RAM de estado sólido, memória ROM de estado sólido, ou coisa do gênero. A unidade de disco rígido 141 é tipicamente conectada ao bar-ramento de sistema 121 através de uma interface de memória removível, como, por exemplo, a interface 140, e a unidade de disco magné- tico 151 e a unidade de disco ótico 155 são tipicamente conectadas ao barramento de sistema 121 por meio de uma interface de memória removível, como, por exemplo, a interface 150.
[0028] As unidades e seus meios de armazenagem de computador associados apresentados acima e ilustrados na Figura 1 provêm a armazenagem de instruções legíveis em computador, estruturas de dados, módulos de programa e outros dados para o sistema computacional 110. Na Figura 1, por exemplo, a unidade de disco rígido 141 é ilustrada como o sistema operacional de armazenagem 144, programas de aplicação 145, outros módulos de programa 146, e dados de programa 147. Observa-se que estes componentes podem ser iguais aos ou diferentes do sistema operacional 144, dos programas de aplicação 135, de outros módulos de programa 136, ou dos dados de programa 137. O sistema operacional 144, os programas de aplicação 145, outros módulos de programa 146, e os dados de programa 147 recebem números diferentes aqui a fim de ilustrar que, no mínimo, os mesmos são cópias diferentes. Um usuário pode entrar comandos e informações para o sistema computacional 110 através de dispositivos de entrada, tais como um teclado 162 ou um dispositivo de indicação 161, comumente referidos como mouse, trackball ou mesa sensível ao toque. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, um joystick, um controlador de jogos, um prato de satélite, um scanner, ou coisa do gênero. Estes e outros dispositivos de entrada são com freqüência conectados à unidade de processamento 120 através de uma interface de entrada de usuário 160 que é acoplada ao barramento de sistema 121, mas podem ser conectados por outra interface e estruturas de barramento, tais como uma porta paralela, uma porta de jogos, ou por um barramento serial universal (USP). Uma interface de gráficos 182, como, por exemplo, a Northbridge, pode também ser conectada ao barramento de sistema 121. Northbridge é um conjunto de chips que se comunica com a CPU, ou unidade de processamento principal 120, e assume a responsabilidade das comunicações de porta gráfica aceleradas (AGP). Uma ou mais unidades de processamento gráfico (GPUs) 184 podem se comunicar com a interface gráfica 182. A este respeito, as GPUs 184 de modo geral incluem uma armazenagem de memória em chip, como, por exemplo, uma armazenagem de registro ou as GPUs 184 se comunicam com uma memória de vídeo 186. As GPUs 184, no entanto, são apenas um exemplo de um co-processador e, sendo assim, uma variedade de dispositivos de co-processamento podem ser incluída no sistema computacional 110. Um monitor 191 ou outro tipo de dispositivo de exibição é também conectado ao barramento de sistema 121 via uma interface, como, por exemplo, uma interface de vídeo 190, que pode, por sua vez, se comunicar com a memória de vídeo 186. Além do monitor 191, os sistemas computacionais podem também incluir outros dispositivos de saída periféricos, tais como alto-falantes 197 e impressora 196, os quais podem ser conectados através de uma interface periférica de saída 195.
[0029] O sistema computacional 110 pode operar em um ambiente de rede ou distribuído utilizando conexões lógicas a um ou mais computadores remotos, como, por exemplo, um computador remoto 180. O computador remoto 180 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo de rede não hierárquica ou outro nó de rede comum, e tipicamente incluir muitos dos ou todos os elementos descritos acima com relação ao sistema computacional 110, embora apenas um dispositivo de armazenagem de memória 181 tenha sido ilustrado na Figura 1. As conexões lógicas ilustradas na Figura 1 incluem uma rede de área local (LAN) 171 e uma rede de área larga (WAN) 173, mas podem incluir ainda outras redes / barra-mentos. Estes ambientes de rede são comuns em residências, escrito- rios, redes de computador por toda uma empresa, intranets e na Internet.
[0030] Quando utilizado em um ambiente de rede LAN, o sistema computacional 110 é conectado à rede LAN 171 através de uma interface de rede ou adaptador 170. Quando utilizado em um ambiente de rede WAN, o sistema computacional 110 tipicamente inclui um modem 172 ou outro meio para o estabelecimento de comunicações pela rede WAN 173, como, por exemplo, pela Internet. O modem 172, que pode ser interno ou ect, pode ser conectado ao barramento de sistema 121 via a interface de entrada de usuário 160, ou por outro mecanismo apropriado. Em um ambiente de rede, os módulos de programa ilustrados com relação ao sistema computacional 110, ou porções do mesmo, podem ser armazenados no dispositivo de armazenagem de memória remoto. À guisa de extremidade, e não de limitação, a Figura 1 ilustra programas de aplicação remotos 185 residindo no dispositivo de memória 181. Será apreciado que as conexões de rede mostradas são exemplares e outros meios para se estabelecer um enlace de comunicação entre os computadores podem ser utilizados.
[0031] Várias estruturas de computação distribuídas foram e estão sendo desenvolvidas à luz da convergência da computação pessoal e a Internet. Pessoas e usuários comerciais são igualmente providos com uma interface totalmente interoperável e habilitada pela Rede para aplicações e dispositivos de computação, tornando as atividades de computação cada vez mais orientadas por navegadores da Rede ou por rede.
[0032] Por exemplo, a plataforma NET da MICROSOFT® inclui servidores, serviços de bloco de construção, como, por exemplo, a armazenagem de dados com base na Rede ou o software de dispositivo transferível. Embora modalidades exemplares sejam aqui descritas com relação a um software residente em um dispositivo de computa- ção, uma ou mais porções da presente invenção podem ainda ser implementadas via um sistema operacional, uma interface de programação de aplicação (API) ou por um objeto de “homem intermediário" entre quaisquer dentre um co-processador, um dispositivo de exibição ou um objeto de solicitação, de tal modo que a operação de acordo com a presente invenção possa ser realizada por, suportada em ou acessada via todas as linguagens e serviços da NET, e em outras estruturas de computação distribuídas também.
TRANSAÇÃO DE LICENCIAMENTO
[0033] Uma transação de licença ocorre quando ou depois que um usuário compra um produto de software para executar em um sistema computacional 110. O produto de software, por exemplo, pode ser um produto empacotado embutido tendo um programa de software armazenado em um meio legível em computador transportável, tal como um DVD, um CDROM, ou um disco flexível. O produto de software pode também ser liberado eletronicamente por uma rede, O usuário carrega o produto de software para o sistema computacional 110. No entanto, o software pode não ser operável sem dados de licença. A fim de receber estes dados de licença, o usuário deve “ativar” o software contatando uma entidade confiada pelo licenciador do software, como, por exemplo, uma câmara de compensação de licença. Esta câmara de compensação, por exemplo, é o fabricante do produto ou uma terceira parte autorizada. Este processo de ativação permite ao cliente ativar o produto de software para instalação e uso em um sistema computacional específico ao prover o cliente com os dados de licença necessários.
[0034] O contato com a câmara de compensação pode ser a partir do sistema computacional 110 por uma rede, tal como pela Internet ou via uma conexão de discagem para um computador da câmara de compensação, o qual, se a ativação for bem sucedida, enviará os da- dos de licença para o sistema computacional 110. De maneira alternativa, o produto de software suporta uma ativação com uma janela de diálogo de interface de usuário gráfica (UI) que solicita ao usuário chamar um representante de serviço na câmara de compensação. A janela de interface UI lista as informações que o usuário comunica para o representante de serviço e inclui uma caixa de entrada para entrar as informações de licença conforme obtidas a partir do representante de serviço que é usado para criar os dados de licença a fim de permitir o uso do software.
A PROVISÃO DE UM ID DE HARDWARE FLEXIVELMENTE TOLERANTE COM BASE NO TEMPO E PESO
[0035] Em uma modalidade, um arquivo de licença associado a um software inclui um identificador HWID, um vetor de tempo, um vetor de peso e uma contagem limite. Quando a licença tem de ser verificada, um ID de hardware corrente (o identificador HWID) é calculado. Para cada tipo de componente dentre um conjunto de tipos de componentes a ser considerado, os componentes daquele tipo são consultados. Cada resultado é manipulado numericamente. Os valores resultantes compreendem o identificador HWID corrente. A fim de permitir o uso do software, o identificador HWID corrente para o sistema computacional deve substancialmente corresponder ao identificador HWID de ativação. O vetor de tempo, o vetor de peso, e a contagem limite são usados na determinação se uma correspondência substancial ocorre.
[0036] Em uma modalidade, os dados de licença 200 inclui um identificador HWID de ativação 210, um vetor de peso 220, um vetor de tempo 230, uma contagem limite 240, conforme mostrado na Figura 2. Estas informações são usadas para se determinar no tempo de execução se o identificador HWID do sistema corrente indica que o mesmo é aceitável para permitir o uso do software no sistema corrente.
[0037] Em uma modalidade, com referência à Figura 1, os tipos de componente usados para calcular um identificador HWID são: a placa de som (localizado na interface periférica de saída 195); a placa de rede (localizado na interface de rede 170), a BIOS 133; a unidade de CDROM 155, o adaptador de vídeo (compreendendo a unidade GPU 184); o dispositivo de disco 151, o adaptador SCSI, o adaptador de disco, o processador 120, e a RAM 132. Evidentemente, outros componentes podem ser empregados sem se afastar do espírito e âmbito da presente invenção, e qualquer combinação de um ou mais destes componentes pode ser usada.
[0038] Quando um identificador HWID é calculado, as consultas de plug and play (PnP) ou outras consultas são executadas no sentido de determinar os identificadores para estes componentes. Alguns, como, por exemplo, o processador 120, podem ser identificados pelo número serial. Outros, como, por exemplo, a BIOS 133, podem ser identificados por uma porção da BIOS 133, por exemplo, os primeiros dois kilo-bytes da BIOS armazenado na memória ROM 131. A memória RAM 132, por exemplo, pode ser identificada por sua capacidade de armazenagem total.
[0039] Como um outro exemplo, a placa de rede pode ser identificada por um endereço MAC. O endereço MAC (de Controle de Acesso de Meios) é um endereço único que identifica a placa de rede. Em uma rede de área local (LAN) ou outra rede, o endereço de controle MAC é usado como o número de hardware único do sistema computacional. Quando o sistema computacional é conectado à Internet, este número é usado para indexar o endereço de protocolo IP correto para o sistema computacional. O endereço de controle MAC de uma placa de rede é um número único que é gravado na placa de rede por seu fabricante. São atribuídos blocos de endereço para cada fabricante de placa de rede, e os mesmos são codificados por hard dentro dos chips dos seus cartões de rede.
[0040] Conforme mostrado, o identificador HWID de ativação 210 inclui, para cada tipo de componente, o número dos componentes daquele tipo que existia na ativação. O identificador HWID de ativação 210 inclui ainda um valor para cada componente. Em uma modalidade, os identificadores de hardware são manipulados de modo a produzirem um valor manipulado, o qual é incluído no identificador HWID. Por exemplo, conforme mostrado na Figura 2, quatro CDROMs são instalados no momento da ativação. Em uma modalidade, o valor manipulado para cada componente é armazenado no identificador HWID. Por exemplo, o cdroml, o cdrom2, o cdrom3, e o cdrom4 são identificadores manipulados para os quatros CDROMs no identificador HWID de ativação exemplar 210.
[0041] Em uma modalidade, a função de manipulação numérica usada para manipular os identificadores de componentes é uma função de módulo. Por exemplo, o valor manipulado BIOS1 que representa o componente de sistema BIOS no identificador HWID 210 pode ser os primeiros dois kilobytes do sistema BIOS, módulo 8. Evidentemente, qualquer outra função de manipulação pode também ser empregada sem se afastar do espírito e âmbito da presente invenção.
[0042] Em uma modalidade, o vetor de peso 220 e uma contagem limite 240 estão também incluídos nos dados de licença 200. Quando um identificador HWID recém calculado é comparado a um identificador HWID de ativação 210 de modo que se possa fazer uma determinação quanto a se será permitido ao sistema computacional executar o software correspondente aos dados de licença 200, cada componente de um tipo de componente específico presente no sistema é consultado. Para cada componente presente de um tipo de componente específico, a consulta é manipulada de modo a criar um identificador de componente manipulado. Estes identificadores de componentes mani- pulados são incluídos no HWID recém calculado.
[0043] O identificador HWID de ativação e o identificador HWID recém calculado são comparados. Um total de contagem de correspondência em execução é mantido. Para cada tipo de componente, se quaisquer destes valores manipulados para um componente daquele tipo no identificador HWID recém calculado correspondem a qualquer um dos valores manipulados para aquele tipo de componente no identificador HWID de ativação 210, neste caso a contagem de correspondência é incrementado. Depois de a contagem de correspondência ser computada , se a contagem de correspondência for maior ou igual à contagem limite, o identificador HWID corrente substancialmente corresponde ao identificador HWID de ativação. Em uma outra modalidade, os identificadores HWIDs devem corresponder exatamente à contagem de correspondência a ser incrementada. Em uma outra modalidade, cada componente de um dado tipo presente no identificador HWID de ativação deve estar presente no HWID recém calculado para a contagem de correspondência a ser incrementada para aquele tipo de componente. Outros meios, para a determinação de uma correspondência entre os identificadores HWIDs para um tipo de componente são também contemplados, e podem ser empregados sem se afastar do espírito e âmbito da presente invenção.
[0044] O vetor de peso 220 governa a quantidade de incremento. Por exemplo, um identificador de sistema BIOS de correspondência incrementará a contagem de correspondência em três, enquanto um identificador de CDROM de correspondência só incrementará a contagem de correspondência em um.
[0045] Além disso, em uma modalidade, o vetor de tempo 230 pode ser empregado ao se calcular a contagem de correspondência. Para qualquer componente, se o vetor de tempo 230 contém um valor para aquele componente, ou seja, a expiração para o uso daquele componente em comparação aos dois identificadores HWIDs. Por exemplo, nos dados de licença exemplares 200, conforme vistos na Figura 2, um período de tempo é armazenado para alguns componentes. Nos dados de licença exemplares 200, dois anos é o período de tempo armazenado para os componentes de CDROM. Sendo assim, se dois anos se passaram desde o licenciamento, um valor não correspondido correspondente aos CDROMs correntemente presentes no sistema computacional não deve afetar negativamente a contagem de correspondência. Sendo assim, a contagem de correspondência será incrementada por um (o valor no vetor de peso 220) independente se um CDROM é encontrado no sistema computacional cujo identificador corresponde aos valores armazenados no identificador HWID de ativação 210 (como o cdroml, o cdrom2, o cdrom3, e o cdrom4). Em uma outra modalidade, a contagem de correspondência é incrementada por um valor pré-especificado (independente do valor do vetor de peso 220) quando a contagem de correspondência está sendo incrementada devido à expiração ao invés de devido a uma correspondência.
[0046] A fim de permitir que uma expiração ocorra, uma data de licença pode ser incluída nos dados de licença 200. De maneira alternativa, cada vetor de tempo 230 pode ser expresso como uma data de configuração. Além disso, medidas de segurança podem ser implementadas a fim de garantir que a reconfiguração de um relógio de sistema não anule a comparação de datas. Quando não existem dados válidos no vetor de tempo 230 para um tipo de componente (em uma modalidade, quando o valor é configurado para zero), o componente é sempre usado no sentido de determinar a contagem de correspondência. Por exemplo, o vetor de tempo 230 indica que apenas os componentes de controle MAC, de CDROM, e de Vídeo expiram. Outros componentes não.
[0047] Em uma modalidade, somente um vetor de peso, porém nenhum vetor de tempo, é incluído nos dados de licença. Nesta modalidade, a fim de comparar dois identificadores HWID, cada componente é considerado, e a contagem de correspondência é incrementada somente se houver uma correspondência. Conforme mostrado na Figura 3, na etapa 310, as informações de identidade correntes para cada um dos componentes relevantes do sistema são obtidas. Na etapa 320, as informações de identidade correntes são comparadas às informações de identidade de componente armazenadas a partir do identificador HWID de ativação. Se uma função de manipulação é usada, as informações de identidade são manipuladas e comparadas às informações de identidade de componente armazenadas, as quais são também manipuladas. Na etapa 330, quando existe uma correspondência para um dado tipo de componente, uma contagem de correspondência é incrementada pelo valor no vetor de peso associado àquele tipo de componente. E na etapa 340, depois de todos os componentes serem considerados, a contagem de correspondência é comparada à contagem de correspondência limite a fim de determinar se a correspondência foi bem sucedida. Este teste pode ser usado de diversas maneiras. Por exemplo, se a comparação está sendo feita no sentido de determinar se um sistema é licenciado para executar o software, se a correspondência for bem sucedida, o sistema computacional consegue executar o software.
[0048] Em uma outra modalidade, apenas um vetor de temperatura, mas não o vetor de peso, é incluído nos dados de licença 200. Nesta modalidade, quando uma correspondência de componentes é encontrada, o mesmo valor é adicionado à contagem de correspondência, independente do tipo de componente que é comparado. No entanto, se o valor de tempo especificado para o tipo de componente se esgotou, mesmo que nenhuma correspondência seja encontrada, a contagem de correspondência será incrementada. Conforme mostrado na Figura 4, na etapa 410, os componentes do identificador HWID, as informações de identidade correntes para cada um dos componentes relevantes do sistema são obtidas. Na etapa 420, as informações de identidade correntes são comparadas às informações de identidade de componente armazenadas a partir do identificador HWID de ativação 210. Na etapa 430, quando existe uma correspondência para um dado tipo de como ou quando o período de expiração se esgotou para aquele tipo de componente, a contagem de correspondência é incrementada. Como antes, na etapa 440, a contagem de correspondência é comparada à contagem de correspondência limite a fim de determinar se a correspondência foi bem sucedida.
[0049] Em uma modalidade, uma contagem de correspondência é incluída nos dados de licença 200. Em uma outra modalidade, uma contagem de correspondência é codificada por hard dentro da computação se uma correspondência substancial se encontra presente. Sendo assim, os dados de licença 200 podem incluir somente um vetor de tempo, somente um vetor de tempo, ou ambos os vetores de tempo e de peso, e em quaisquer destas combinações podem incluir uma contagem de correspondência ou, de maneira alternativa, podem se basear em uma contagem de correspondência codificada por hard dentro da computação de se uma correspondência substancial se encontra presente.
[0050] Ao se usar um vetor de tempo, um vetor de peso, ou ambos, a licença não mais é um dado passivo, mas sim desempenha um papel nos dados de comparação de licença. O licenciador ou a câmara de compensação pode ter mais controle sobre a experiência do usuário. Por exemplo, o licenciador pode pesquisar usuários e descobrir que um percentual significante dos mesmos trocará cartões de vídeo em dois anos. Isto pode fazer com que o licenciador configure o valor de tempo para cartões de vídeo em novas licenças de dois anos. Mais tarde, pode ser determinado que novos cartões de vídeo cheguem ao mercado em seis meses, e que a maioria dos usuários trocarão então o sua placa de vídeo. O licenciador pode configurar o valor de tempo para seis meses em novas licenças. Pode ser determinado que haja uma ampla variância em quando os usuários trocarão as unidades de CDROM, mas outros valores de tempo são muito precisos na descrição do comportamento do usuário. Isto pode fazer com que o licenciador configure o valor de peso para unidades de CDROM menor que os valores de peso para outros componentes.
[0051] Em uma modalidade, um vetor de peso é usado para reagir às mudanças nas informações relativas a um usuário. Um usuário obtém uma primeira licença para um software. Neste caso, por exemplo, quando um período de avaliação se esgota, o usuário obtém uma segunda licença para o software. Este primeiro identificador HWID de ativação é comparado ao segundo identificador HWID de ativação, e os valores de peso para os componentes são ajustados de forma apropriada. Nesta tal modalidade, os componentes que são trocados recebem um peso maior com relação aos componentes que não foram trocados. Isto reflete a suposição de que um componente trocado recentemente não será trocado novamente. Nesta modalidade, os componentes que foram trocados recebem um peso menor com relação aos componentes que não foram trocados. Isto reflete a suposição de que o usuário provavelmente testará ou trocará os componentes que o usuário historicamente trocou.
CONCLUSÃO
[0052] Conforme mencionado acima, embora as modalidades exemplares da presente invenção tenham sido descritas com relação a vários dispositivos de computação e arquiteturas de rede, os conceitos subjacentes podem ser aplicados a qualquer dispositivo ou sistema de computação no qual é desejável se implementar um ID de hardware.
Sendo assim, os métodos e sistemas da presente invenção podem ser aplicados a uma variedade de aplicações e dispositivos. Por exemplo, o algoritmo da presente invenção pode ser aplicado ao sistema operacional de um dispositivo de computação provido como um objeto separado no dispositivo, como parte de um outro objeto, como um objeto transferível a partir de um servidor, como um “homem intermediário” entre um dispositivo ou objeto e a rede, como um objeto distribuído, etc. Embora linguagens de programação exemplares, nomes e exemplos sejam escolhidos no presente documento como representativos de várias escolhas, estas linguagens, nomes e exemplos não pretendem ser limitantes. Uma pessoa de habilidade simples na técnica apreciará que existem inúmeras maneiras de se prover um código de objeto que alcance os mesmos sistemas e métodos ou sistemas e métodos similares ou equivalentes obtidos pela presente invenção.
[0053] As diversas técnicas descritas no presente documento podem ser implementadas com relação a um hardware ou a um software ou, quando apropriado, a uma combinação de ambos. Sendo assim, os métodos e o aparelho da presente invenção, ou certos aspectos ou porções da mesma, podem assumir a forma de um código de programa (isto é, instruções) incorporado em um meio tangível, como, por exemplo, em disquetes flexíveis, CD-ROMs, unidades rígidas, ou qualquer outro meio de armazenagem legível em máquina, no qual quando o código de programa é carregado para e executado por uma máquina, como, por exemplo, um computador, a máquina se torna um aparelho para a prática da presente invenção. No caso de uma execução de código de programa em computadores programáveis, o dispositivo de computação de modo geral incluirá um processador, um meio de armazenagem legível pelo processador (incluindo uma memória volátil e não volátil e/ou elementos de armazenagem), pelo menos um dispositivo de entrada, e pelo menos um dispositivo de saída. Um ou mais programas que podem utilizar os serviços de processamento de sinal da presente invenção, por exemplo, através do uso de uma interface API de processamento de dados ou coisa do gênero, são de preferência implementados em uma linguagem procedural de alto nível ou em uma linguagem de programação orientada a objetos a fim de se comunicar com um computador. No entanto, os programas podem ser implementados em uma linguagem de instalação ou linguagem de máquina, se desejado. Em qualquer caso, a linguagem pode ser uma linguagem compilada ou uma linguagem interpretada, e combinada com implementações de hardware.
[0054] Os métodos e aparelho da presente invenção podem também ser praticados via uma comunicação incorporada na forma de um código de programa que é transmitido por algum meio de transmissão, como, por exemplo, por fiação ou cabos elétricos, através de fibras óticas, ou via qualquer outra forma de transmissão, no qual, quando o código de programa é recebido e transferido para e executado por uma máquina, como, por exemplo, uma memória EPROM, um chip do tipo gate array, um dispositivo lógico programável (PLD), um computador de cliente, um gravador de vídeo ou coisa do gênero, ou uma máquina de recepção tendo as capacidades de processamento de sinal conforme descritas nas modalidades exemplares acima, se torna um aparelho para a prática da presente invenção. Quando implementado em um processador de uso geral, o código de programa se combina com o processador de modo a prover um aparelho único que opera de modo a invocar a funcionalidade da presente invenção. Além disso, quaisquer técnicas de armazenagem usadas com relação à presente invenção podem invariavelmente ser uma combinação de hardware e software.
[0055] Embora a presente invenção tenha sido descrita com relação às modalidades preferidas da várias figuras, deve-se entender que outras modalidades similares podem ser usadas ou modificações e adições podem ser feitas à modalidade descrita para a realização da mesma função da presente invenção sem se desviar da mesma. Ademais, deve-se enfatizar que uma variedade de plataformas de computador, incluindo sistemas operacionais de dispositivo manual e outros sistemas operacionais específicos à aplicação são contemplados, especialmente porque o número de dispositivos de rede sem fio continua a se proliferar. Além disso, a presente invenção pode ser implementada em ou através de uma pluralidade de chips ou dispositivos de processamento, e a armazenagem pode de maneira similar ser efetuada através de uma pluralidade de dispositivos. Sendo assim, a presente invenção não deve se limitar a uma única modalidade, devendo, sim, ser construída em amplitude e âmbito de acordo com as reivindicações em apenso.
REIVINDICAÇÕES

Claims (20)

1. Método para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes, o método caracterizado pelo fato de que compreende as etapas de: para cada tipo de componente dentre um conjunto de tipos de componente, obter uma identidade de componente corrente associado a partir do dito sistema computacional; para cada tipo de componente dentre o dito conjunto de tipos de componente, comparar a dita identidade de componente corrente associado a uma identidade de componente armazenado associado; calcular uma contagem de correspondência, para cada tipo de componente dentre o dito conjunto de tipos de componente, se os resultados da dita comparação forem positivos ou se um período de expiração associado se passou, incrementar a dita contagem de correspondência; e comparar a dita contagem de correspondência a uma contagem de correspondência limite.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita etapa de, para cada tipo de componente dentre o dito conjunto de tipos de componente, obter uma identidade de componente corrente associado compreende a etapa de: obter uma identidade de componente corrente individual associado para cada componente daquele tipo de componente.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que, para pelo menos um tipo de componente dentre o dito conjunto de tipos de componente de hardware, a dita identidade de componente armazenado associado compreende uma ou mais identidades de componente armazenado individual associado, e onde a dita etapa de, para cada tipo de componente de hardware dentre o dito conjunto de tipos de componente de hardware, comparar a dita identidade de componente existente associado a uma identidade de componente armazenado associado compreende a etapa de: retornar um resultado positivo se quaisquer das ditas identidades de componente armazenado individual associado corresponderem a quaisquer dentre as ditas identidades de componente corrente individual associado.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que, para pelo menos um tipo de componente dentre o dito conjunto de tipos de componente de hardware, a dita identidade de componente armazenado associado compreende uma ou mais identidades de componente armazenado individual associado, e onde a dita etapa de, para cada tipo de componente de hardware dentre o dito conjunto de tipos de componente de hardware, comparar a dita identidade de componente existente associado a uma identidade de componente armazenado associado compreende a etapa de: retornar um resultado positivo se todas dentre as ditas identidades de componente armazenado individual associado corresponderem a quaisquer dentre as ditas identidades de componente corrente individual associado.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita etapa de, para cada tipo de componente de hardware dentre um conjunto de tipos de componente de hardware, obter uma identidade de componente existente associado compreende as etapas de: consultar um componente de hardware do tipo de componente de hardware para um resultado de consulta; e manipular numericamente o resultado da consulta.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o dito conjunto de tipos de componente compreende um ou mais selecionados dentre o seguinte: uma placa de som, uma placa de rede, uma BIOS, uma unidade de CDROM, um adaptador de vídeo, um dispositivo de disco, um adaptador SCSI, um adaptador de disco, um processador, e uma RAM.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende a etapa de: produzir um vetor de tempo compreendendo, para cada dentre os tipos de componente, um valor de tempo para o dito tipo de componente.
8. Estrutura de dados de licença para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes dentre um ou mais tipos de componente, a estrutura sendo caracterizada pelo fato de compreender: um ID de hardware compreendendo uma pluralidade de valores, cada valor correspondendo a uma identidade de componente para um dentre os ditos componentes; um vetor de tempo compreendendo, para cada qual dentre pelo menos um dos ditos tipos de componente, um valor de expiração para o dito tipo de componente.
9. Estrutura de dados de licença, de acordo com a reivindicação 8, caracterizada adicionalmente pelo fato de compreender: uma contagem limite para a determinação se o dito ID de hardware substancialmente corresponde a um segundo ID de hardware.
10. Estrutura de dados de licença, de acordo com a reivindicação 9, caracterizada adicionalmente pelo fato de compreender: um vetor de peso compreendendo, para cada qual dentre o dito um ou mais tipos de componente, um valor de peso para o dito tipo de componente.
11. Estrutura de dados de licença, de acordo com a reivindicação 10, caracterizada adicionalmente pelo fato de compreender: uma contagem limite para a determinação se o dito ID de hardware substancialmente corresponde a um segundo ID de hardware.
12. Dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes, o dispositivo sendo caracterizado pelo fato de que compreende: um meio para obter uma identidade de componente corrente associado a partir do dito sistema computacional, para cada tipo de componente dentre um conjunto de tipos de componente; um meio para comparar a dita identidade de componente corrente associado a uma identidade de componente armazenado associado, para cada tipo de componente dentre o dito conjunto de tipos de componente; um meio para calcular uma contagem de correspondência, para cada tipo de componente dentre o dito conjunto de tipos de componente, se os resultados da dita comparação forem positivos ou se um período de expiração associado passou, incrementar a dita contagem de correspondência; e um meio para comparar a dita contagem de correspondência a uma contagem de correspondência limite.
13. Dispositivo de computação, de acordo com a reivindicação 12, caracterizado pelo fato de que o dito meio para obter uma identidade de componente corrente associado, para cada tipo de componente dentre o dito conjunto de tipos de componente, compreende: um meio para obter uma identidade de componente corrente individual associado para cada componente daquele tipo de componente.
14. Dispositivo de computação, de acordo com a reivindicação 13, caracterizado pelo fato de que, para pelo menos um tipo de componente dentre o dito conjunto de tipos de componente de hardware, a dita identidade de componente armazenado associado compreende uma ou mais identidades de componente armazenado individual associado, e onde, para cada tipo de componente de hardware dentre o dito conjunto de tipos de componente de hardware, o dito meio para comparar a dita identidade de componente existente associado a uma identidade de componente armazenado associado compreende: um meio para retornar um resultado positivo se quaisquer das ditas identidades de componente armazenado individual associado corresponderem a quaisquer dentre as ditas identidades de componente corrente individual associado.
15. Dispositivo de computação, de acordo com a reivindicação 13, caracterizado pelo fato de que, para pelo menos um tipo de componente dentre o dito conjunto de tipos de componente de hardware, a dita identidade de componente armazenado associado compreende uma ou mais identidades de componente armazenado individual associado, e onde, para cada tipo de componente de hardware dentre o dito conjunto de tipos de componente de hardware, o dito meio para comparar a dita identidade de componente existente associado a uma identidade de componente armazenado associado compreende: um meio para retornar um resultado positivo se todas as ditas identidades de componente armazenado individual associado corresponderem a quaisquer dentre as ditas identidades de componente corrente individual associado.
16. Dispositivo de computação, de acordo com a reivindicação 12, caracterizado pelo fato de que, para cada tipo de componente de hardware dentre um conjunto de tipos de componente de hardware, o dito meio para obter uma identidade de componente existente associado compreende: um meio para consultar um componente de hardware do tipo de componente de hardware para um resultado de consulta; e um meio para manipular numericamente o resultado da consulta.
17. Dispositivo de computação, de acordo com a reivindicação 12, caracterizado pelo fato de que o dito conjunto de tipos de componente compreende um ou mais selecionados dentre o seguinte: uma placa de som, uma placa de rede, uma BIOS, uma unidade de CDROM, um adaptador de vídeo, um dispositivo de disco, um adaptador de interface SCSI, um adaptador de disco, um processador, e uma memória RAM.
18. Dispositivo de computação, de acordo com a reivindicação 12, caracterizado pelo fato de que o dito meio para calcular uma contagem de correspondência, para cada tipo de componente dentre o dito conjunto de tipos de componente, se o resultado da dita comparação for positivo, para incrementar uma contagem de correspondência por meio da adição de um peso de tipo de componente associado armazenado compreende: um meio para determinar se um período de expiração associado passou, para cada tipo de componente; e um meio para adicionar o dito peso de tipo de componente associado armazenado, para cada tipo de componente, se o dito período de expiração passou.
19. Dispositivo de computação, de acordo com a reivindica- ção 12, caracterizado pelo fato de que o dito meio para calcular uma contagem de correspondência, para cada tipo de componente dentre o dito conjunto de tipos de componente, se o resultado da dita comparação for positivo, para incrementar uma contagem de correspondência por meio da adição de um peso de tipo de componente associado armazenado compreende: um meio para determinar se um período de expiração associado passou, para cada tipo de componente; e um meio para adicionar um incremento de período expirado pré-especificado, para cada tipo de componente, se o dito período de expiração passou.
20. Dispositivo, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende: um meio para a produção de um vetor de tempo compreendendo, para cada dentre um ou mais tipos de componente, um valor de tempo para o dito tipo de componente.
BRPI0400061A 2003-01-06 2004-01-05 método, estrutura de dados de licença, e dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes BRPI0400061B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/337,064 US7302590B2 (en) 2003-01-06 2003-01-06 Systems and methods for providing time-and weight-based flexibly tolerant hardware ID

Publications (2)

Publication Number Publication Date
BRPI0400061A BRPI0400061A (pt) 2004-10-19
BRPI0400061B1 true BRPI0400061B1 (pt) 2016-08-09

Family

ID=32655428

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0400061A BRPI0400061B1 (pt) 2003-01-06 2004-01-05 método, estrutura de dados de licença, e dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes

Country Status (14)

Country Link
US (2) US7302590B2 (pt)
EP (1) EP1452940B1 (pt)
JP (1) JP4651947B2 (pt)
KR (1) KR101014140B1 (pt)
CN (1) CN100377022C (pt)
AT (1) ATE419587T1 (pt)
AU (1) AU2004200043B2 (pt)
BR (1) BRPI0400061B1 (pt)
CA (1) CA2454842C (pt)
DE (1) DE60325550D1 (pt)
DK (1) DK1452940T3 (pt)
ES (1) ES2318085T3 (pt)
MX (1) MXPA04000166A (pt)
RU (1) RU2372653C2 (pt)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644442B2 (en) * 2003-01-31 2010-01-05 Microsoft Corporation Systems and methods for using machine attributes to deter software piracy in an enterprise environment
US7290149B2 (en) * 2003-03-03 2007-10-30 Microsoft Corporation Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
US20050027657A1 (en) * 2003-08-01 2005-02-03 Yuri Leontiev Distinguishing legitimate hardware upgrades from unauthorized installations of software on additional computers
US7379918B2 (en) * 2004-07-30 2008-05-27 Microsoft Corporation Method and system for single reactivation of software product licenses
US9547780B2 (en) 2005-03-28 2017-01-17 Absolute Software Corporation Method for determining identification of an electronic device
US20140013449A1 (en) 2005-07-28 2014-01-09 Adobe Systems Incorporated Delayed validation for software licensing and activation
US8712973B2 (en) * 2006-04-11 2014-04-29 International Business Machines Corporation Weighted determination in configuration management systems
US8769703B2 (en) 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US8521652B2 (en) * 2006-05-19 2013-08-27 Hewlett-Packard Development Company, L.P. Discovering licenses in software files
US7610483B2 (en) * 2006-07-25 2009-10-27 Nvidia Corporation System and method to accelerate identification of hardware platform classes
US20080183690A1 (en) 2007-01-26 2008-07-31 Ramachandran Puthukode G Method for providing assistance in making change decisions in a configurable managed environment
FR2912529A1 (fr) * 2007-02-13 2008-08-15 France Telecom Couplage d'un programme informatique ou de donnees a un systeme de reference et verification associee.
US8528109B2 (en) * 2007-10-09 2013-09-03 Microsoft Corporation Optimizing amount of data passed during software license activation
EP2260427A4 (en) * 2008-02-20 2016-11-16 Ericsson Telefon Ab L M FLEXIBLE NODEIDENTITY FOR TELECOM NODES
US8676714B2 (en) * 2009-06-11 2014-03-18 Microsoft Corporation Hardware specific product license validation
US20100332400A1 (en) * 2009-06-24 2010-12-30 Craig Stephen Etchegoyen Use of Fingerprint with an On-Line or Networked Payment Authorization System
US20110093503A1 (en) * 2009-10-19 2011-04-21 Etchegoyen Craig S Computer Hardware Identity Tracking Using Characteristic Parameter-Derived Data
US8316421B2 (en) * 2009-10-19 2012-11-20 Uniloc Luxembourg S.A. System and method for device authentication with built-in tolerance
US9256899B2 (en) * 2010-01-15 2016-02-09 Dell Products, L.P. System and method for separation of software purchase from fulfillment
US9235399B2 (en) * 2010-01-15 2016-01-12 Dell Products L.P. System and method for manufacturing and personalizing computing devices
US10387927B2 (en) * 2010-01-15 2019-08-20 Dell Products L.P. System and method for entitling digital assets
US9100396B2 (en) * 2010-01-29 2015-08-04 Dell Products L.P. System and method for identifying systems and replacing components
US8170783B2 (en) 2010-03-16 2012-05-01 Dell Products L.P. System and method for handling software activation in entitlement
US9218491B2 (en) * 2010-04-13 2015-12-22 Hewlett-Packard Development Company, L.P. Systems and methods for providing security in an electronic device
GB2484268A (en) 2010-09-16 2012-04-11 Uniloc Usa Inc Psychographic profiling of users of computing devices
US8657000B2 (en) 2010-11-19 2014-02-25 Exxonmobil Upstream Research Company Systems and methods for enhanced waterfloods
US8739869B2 (en) 2010-11-19 2014-06-03 Exxonmobil Upstream Research Company Systems and methods for enhanced waterfloods
US8656996B2 (en) 2010-11-19 2014-02-25 Exxonmobil Upstream Research Company Systems and methods for enhanced waterfloods
US8974661B2 (en) 2010-12-30 2015-03-10 Exxonmobil Upstream Research Company Methods for separation of bitumen from oil sands
EP2686806B1 (en) * 2011-03-15 2019-09-11 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment using a secret sharing scheme
AU2011101296B4 (en) 2011-09-15 2012-06-28 Uniloc Usa, Inc. Hardware identification through cookies
US8949401B2 (en) 2012-06-14 2015-02-03 Dell Products L.P. Automated digital migration
US9779219B2 (en) 2012-08-09 2017-10-03 Dell Products L.P. Method and system for late binding of option features associated with a device using at least in part license and unique ID information
US8856757B2 (en) * 2012-11-08 2014-10-07 International Business Machines Corporation Automatic license entitlement calculation
AU2013100802B4 (en) 2013-04-11 2013-11-14 Uniloc Luxembourg S.A. Device authentication using inter-person message metadata
US8695068B1 (en) 2013-04-25 2014-04-08 Uniloc Luxembourg, S.A. Device authentication using display device irregularity
CN104850519A (zh) * 2015-04-10 2015-08-19 宁波萨瑞通讯有限公司 电子产品中硬件id更换情况的远程统计系统及方法
US10365931B2 (en) * 2017-02-27 2019-07-30 Microsoft Technology Licensing, Llc Remote administration of initial computer operating system setup options
US20200220865A1 (en) * 2019-01-04 2020-07-09 T-Mobile Usa, Inc. Holistic module authentication with a device
US20230297724A1 (en) * 2022-03-15 2023-09-21 Microsoft Technology Licensing, Llc Hardware identity restoration post-device repair

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2145068A1 (en) * 1992-09-21 1994-03-31 Ric Bailier Richardson System for software registration
JP2924560B2 (ja) * 1993-04-23 1999-07-26 日本電気株式会社 有償プログラムプロダクト利用チェック装置
US5715403A (en) * 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US5815709A (en) * 1996-04-23 1998-09-29 San Microsystems, Inc. System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like
JPH10283271A (ja) * 1997-03-31 1998-10-23 Victor Co Of Japan Ltd 暗号鍵生成方法,光ディスク,情報再生方法及びその装置
US6148407A (en) * 1997-09-30 2000-11-14 Intel Corporation Method and apparatus for producing computer platform fingerprints
US6501846B1 (en) * 1997-11-25 2002-12-31 Ethentica, Inc. Method and system for computer access and cursor control using a relief object image generator
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6697948B1 (en) 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
DE10023820B4 (de) * 2000-05-15 2006-10-19 Siemens Ag Software-Schutzmechanismus
DE10155752A1 (de) * 2001-11-14 2003-05-22 Siemens Ag Lizenzierungsverfahren
JP4313941B2 (ja) * 2000-09-29 2009-08-12 株式会社東芝 半導体記憶装置
KR100375220B1 (ko) * 2000-10-12 2003-03-07 삼성전자주식회사 플래시 메모리 장치 형성방법
US6898286B2 (en) * 2000-12-19 2005-05-24 International Business Machines Corporation Method and system verifying product licenses using hardware and product identifications
US20040073789A1 (en) * 2002-10-15 2004-04-15 Powers John Stephenson Method for collaborative software licensing of electronically distributed computer programs
TWI255683B (en) * 2005-01-05 2006-05-21 Asustek Comp Inc Portable electronic device and battery module thereof

Also Published As

Publication number Publication date
JP4651947B2 (ja) 2011-03-16
DK1452940T3 (da) 2009-03-23
CA2454842C (en) 2012-10-23
KR101014140B1 (ko) 2011-02-14
CA2454842A1 (en) 2004-07-06
US7302590B2 (en) 2007-11-27
KR20040063824A (ko) 2004-07-14
MXPA04000166A (es) 2005-06-17
RU2004100639A (ru) 2005-06-10
AU2004200043B2 (en) 2009-07-16
RU2372653C2 (ru) 2009-11-10
CN100377022C (zh) 2008-03-26
US7779274B2 (en) 2010-08-17
ATE419587T1 (de) 2009-01-15
US20040133792A1 (en) 2004-07-08
EP1452940B1 (en) 2008-12-31
EP1452940A1 (en) 2004-09-01
BRPI0400061A (pt) 2004-10-19
JP2004213676A (ja) 2004-07-29
AU2004200043A1 (en) 2004-07-22
ES2318085T3 (es) 2009-05-01
DE60325550D1 (de) 2009-02-12
US20080040619A1 (en) 2008-02-14
CN1609746A (zh) 2005-04-27

Similar Documents

Publication Publication Date Title
BRPI0400061B1 (pt) método, estrutura de dados de licença, e dispositivo de computação para permitir a validação de termos de licenciamento de software para um produto de software para uso em um sistema computacional compreendendo um ou mais componentes
US7739517B2 (en) Hardware-based authentication of a software program
US10305893B2 (en) System and method for hardware-based trust control management
US7308576B2 (en) Authenticated code module
US9258331B2 (en) System and method for hardware-based trust control management
TWI588749B (zh) 用於確保管理控制器韌體安全之方法及計算機裝置
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
JP4848458B2 (ja) 永続的セキュリティシステム及び永続的セキュリティ方法
TW200304620A (en) Authenticated code method and apparatus
US7478220B2 (en) Method, apparatus, and product for prohibiting unauthorized access of data stored on storage drives
US20030126453A1 (en) Processor supporting execution of an authenticated code instruction
USRE44969E1 (en) Storage media with benchmark representative of data originally stored thereon
GB2466071A (en) Associating a Signing key with a Software Component of a Computing Platform
US20050177823A1 (en) License management
BRPI0609123A2 (pt) autenticação de unidade de disco rìgido
BRPI0712867A2 (pt) ambiente de computaÇço independente e aprovisionamento de funcionamento de dispositivo de computaÇço
US20060294355A1 (en) Secure variable/image storage and access
US20200117804A1 (en) Secure management and execution of computing code including firmware
US20210232688A1 (en) Determine whether to perform action on computing device based on analysis of endorsement information of a security co-processor
US10242195B2 (en) Integrity values for beginning booting instructions
JP2003005855A (ja) ライセンス管理方法および記録媒体

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

Free format text: TRANSFERIDO DE: MICROSOFT CORPORATION

B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B09W Correction of the decision to grant [chapter 9.1.4 patent gazette]

Free format text: RETIFICA-SE PARECER DE DEFERIMENTO (9.1) NOTIFICADO NA RPI NO 2363 DE 19/04/2016, UMA VEZ QUE FOI CONSTATADO QUE ESTA NOTIFICACAO FOI EFETUADA COM INCORRECOES

B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 09/08/2016, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 17A ANUIDADE.

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

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