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