ES2318085T3 - Sistemas y procedimientos para proporcionar id de hardware tolerante de manera flexible basado en el tiempo y el peso. - Google Patents

Sistemas y procedimientos para proporcionar id de hardware tolerante de manera flexible basado en el tiempo y el peso. Download PDF

Info

Publication number
ES2318085T3
ES2318085T3 ES03029937T ES03029937T ES2318085T3 ES 2318085 T3 ES2318085 T3 ES 2318085T3 ES 03029937 T ES03029937 T ES 03029937T ES 03029937 T ES03029937 T ES 03029937T ES 2318085 T3 ES2318085 T3 ES 2318085T3
Authority
ES
Spain
Prior art keywords
component
type
identity
hardware
types
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
ES03029937T
Other languages
English (en)
Inventor
Pratul Dublish
Caglar Gunyakti
Aidan T. Hughes
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2318085T3 publication Critical patent/ES2318085T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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

Un procedimiento para permitir el cumplimiento de los términos de licencia de software para un producto de software para su uso con un sistema informático que comprende uno o más componentes, comprendiendo el procedimiento: para cada tipo de componente de entre un conjunto de tipos de componente, obtener (410) una identidad de componente actual asociada a partir de dicho sistema informático; para cada tipo de componente de entre dicho conjunto de tipos de componente, comparar (420) dicha identidad de componente actual asociada con una identidad de componente almacenada asociada; calcular (430) una puntuación de coincidencia determinando, para cada tipo de componente de entre dicho conjunto de tipos de componente, si ha pasado un periodo de expiración asociado usando un vector de tiempo que indica para cada tipo de componente un periodo de expiración, si los resultados de dicha comparación son positivos, incrementar dicha puntuación de coincidencia, y si los resultados de dicha comparación no son positivos y si el periodo de expiración asociado ha pasado, incrementar dicha puntuación de coincidencia; comparar (440) dicha puntuación de coincidencia con una puntuación de coincidencia umbral; y permitir que el sistema informático ejecute el producto de software si la puntuación de coincidencia es superior o igual a la puntuación de coincidencia umbral.

Description

Sistemas y procedimientos para proporcionar ID de hardware tolerante de manera flexible basado en el tiempo y el peso.
Campo de la invención
La presente invención va dirigida a sistemas y procedimientos para proporcionar información de identificación para un sistema informático y evaluar si el sistema informático coincide con una versión guardada de información de identificación. Más en particular, la presente invención se refiere a sistemas y procedimientos para proporcionar un ID de hardware para un sistema informático basándose en información de identificación del sistema informático que es flexible y tolerante a cambios normales que tienen lugar mientras se usa el sistema informático.
Antecedentes de la invención
El uso de software está controlado a menudo por una licencia de software. Dado que el software puede copiarse con facilidad tras su venta, es difícil evitar los usos de software sin una licencia asociada. Tales usos incluyen la piratería, cuando el software se replica de forma ilícita y se instalan copias pirateadas para su uso en sistemas informáticos sin licencia. Adicionalmente, un comprador de una copia no pirateada podría usar de forma inadecuada el software fuera del ámbito de la licencia asociada. Por ejemplo, un usuario podría instalar el software en más sistemas informáticos de los permitidos conforme a la licencia.
Si bien las licencias proporcionan un camino de recurso legal contra tales prácticas, pueden ser difíciles de ejecutar en la práctica. Por consiguiente, existe una necesidad de otros medios para reducir la magnitud de uso de software fuera de los términos de licencia. Un procedimiento de este tipo se basa en crear un identificador para el sistema informático de un usuario que tiene licencia para usar el software. La patente estadounidense número 6,243,468 titulada "Sistema antipiratería de software que se adapta a mejoras de hardware" y la solicitud de patente estadounidense publicada número 20010044782 detallan este procedimiento.
Los sistemas informáticos normalmente incluyen varias piezas de hardware, entre las que se incluyen unidades de disco, unidades de CDROM y procesadores. Estos componentes de hardware tienen cada uno identificadores (números de serie o nombres) a los que puede acceder el sistema, por ejemplo ejecutando una llamada plug-and-play (PnP, "enchufar y usar"). Estos identificadores de componentes pueden combinarse de una manera predeterminada para crear un identificador de hardware (HWID), que puede usarse para identificar un sistema informático particular.
De manera significativa, el HWID puede emplearse como parte de o en combinación con una licencia de software para garantizar que el software sobre el que se ha concedido una licencia de uso en un sistema informático específico se usa sólo en ese sistema informático. En particular, un software con una licencia que especifica un HWID sólo se ejecutará en un sistema informático si, en el momento de la ejecución, el HWID calculado para el sistema informático coincide con el HWID especificado en la licencia de software.
Sin embargo, cuando el usuario de un sistema informático añade, elimina o intercambia componentes del sistema, por ejemplo, por motivos de reparación o mejora, el HWID cambia. Cada componente nuevo o intercambiado tendrá un nuevo identificador de componente. Por tanto, cuando se calcula el HWID para el sistema, un nuevo identificador de componente hará que cambie el HWID. Esto provoca problemas cuando el usuario ha obtenido una licencia de software que especifica el HWID de una versión anterior de su sistema informático.
Por consiguiente, se conoce aceptar un HWID almacenado como una coincidencia sustancial cuando se compara con un HWID recién calculado y permitir al usuario ejecutar el software. Por ejemplo, la patente estadounidense anteriormente mencionada, número 6,243,468, da a conocer un caso en el que se incluyen cinco identificadores de componentes en el HWID, y si resulta que coinciden cuatro cualquiera de ellos, el producto de software puede operar en el sistema informático.
En la patente estadounidense número 6,148,407 se da a conocer un procedimiento y aparato para producir huellas digitales para plataformas informáticas. La máquina central recupera características del sistema para muestrear valores comerciales. La combinación de estos valores es la denominada huella digital del sistema, que se almacena. En un proceso de verificación se crea una huella digital para el nuevo sistema. Los valores de características recién muestreados se comparan con los valores de plantilla almacenados. Los valores de comparación se normalizan entonces usando una función de predicción específica de la característica. Tras la aplicación de la función de predicción, cada valor se pondera con un factor de fiabilidad relativo. Se forma entonces una salida del comparador. La suma se realiza normalmente de forma gradual a medida que se generan los valores ponderados mediante los procesos de comparación, normalización y ponderación, el valor del comparador está sujeto entonces al valor umbral de la aplicación.
En la técnica anterior no se trata el hecho de que ciertos componentes pueden intercambiarse con más frecuencia que otros. Tampoco se trata la utilidad de tener requisitos de coincidencia del sistema informático menos estrictos para la licencia a media que pasa el tiempo, ya que el valor del software puede disminuir con el tiempo. Un sistema de licencia basado en HWID que tratara estos hechos proporcionaría mayor seguridad y permitiría seguridad dinámica a lo largo del tiempo.
En vista de la situación anteriormente mencionada, existe una necesidad de un sistema que permita usar un HWID para identificar y vincular una instanciación de software con licencia con un sistema informático, al tiempo que se toleran cambios en el sistema informático de un usuario legítimo con la flexibilidad necesaria para dar cabida a cambios en el sistema de hardware y adaptarse al paso del tiempo.
El objetivo de la presente invención es mejorar el cumplimiento de licencias de software. Este objetivo se resuelve mediante las reivindicaciones independientes. En las reivindicaciones dependientes se describen realizaciones preferidas.
Sumario de la invención
En vista de lo anterior, la presente invención proporciona sistemas y procedimientos para proporcionar un HWID que se mantenga válido aunque se cambie la configuración del sistema.
En una realización, cuando se activa un software, se calcula el HWID del sistema. Un código de activación de producto en el software o en otro lugar en el sistema consulta los componentes de hardware existentes para obtener información relativa a estos componentes. Por ejemplo, la tarjeta de red puede consultarse para determinar la dirección MAC (control de acceso a medios). La información relativa a los componentes de hardware de cada tipo de componente de hardware se somete a hash. Los valores sometidos a hash se concatenan en un HWID.
El HWID calculado en la activación se incluye en un archivo de datos de licencia. También se incluyen con el HWID de activación un vector de tiempo y uno de peso, que contienen un valor de tiempo y peso para cada componente de hardware. También se incluye una puntuación umbral en el archivo de datos de licencia. Este archivo de datos de licencia debe evaluarse cada vez que se usa el software. Cuando la licencia requiere verificación del sistema informático, el HWID del sistema vuelve a evaluarse y el HWID recién calculado se compara con el HWID de activación.
Cuando se compara el HWID recién calculado con el HWID de activación para determinar si ambos HWID coinciden, se usa un vector de tiempo y un vector de peso en la comparación. El valor del vector de tiempo para un componente determina si el componente se considerará en la determinación de si el HWID recién calculado coincide sustancialmente con el HWID de activación. El valor del vector de peso para un componente determina qué peso se dará a una coincidencia para ese componente en la determinación de si el HWID recién calculado coincide sustancialmente con el HWID de activación.
A continuación se describen otras características y realizaciones de la presente invención.
Breve descripción de los dibujos
El sistema y los procedimientos para proporcionar diseño prospectivo con promediación y visibilidad según la presente invención se describen adicionalmente en referencia a los dibujos adjuntos en los que:
la figura 1 es un diagrama de bloques que representa un sistema informático ejemplar no limitante en el que puede implementarse la presente invención;
la figura 2 es un diagrama de bloques que representa datos de licencia en una realización de la invención;
la figura 3 es un diagrama de bloques que representa un procedimiento de comparar cada identidad de componente almacenada con una identidad de componente actual, usando un vector de peso; y
la figura 4 es un diagrama de bloques que representa un procedimiento de comparar cada identidad de componente almacenada con una identidad de componente actual, usando un vector de tiempo.
Descripción detallada de la invención Consideraciones generales
En una realización, se calcula un ID de hardware (HWID) actual. Para cada tipo de componente de entre un conjunto de tipos de componente que han de considerarse, se consultan los componentes de ese tipo. En una realización, cada resultado se somete a hash. Los valores resultantes comprenden el HWID actual.
En una realización, un archivo de licencia asociado con software almacena un HWID de activación, un vector de tiempo, un vector de peso y una puntuación umbral. Para permitir el uso del software, el HWID actual para el sistema informático debe coincidir sustancialmente con el HWID de activación. El vector de tiempo, el vector de peso, y la puntuación umbral se usan para determinar si se produce una coincidencia sustancial.
Para determinar si el HWID actual coincide sustancialmente con el HWID de activación, para cada tipo de componente, cada valor sometido a hash almacenado para componentes de ese tipo se compara con un valor sometido a hash para cada componente actual de ese tipo. En una realización, se calcula una puntuación de coincidencia para la comparación global. Cualquier coincidencia indica que un componente que existía en el sistema en el momento en que se calculó el HWID almacenado todavía existe en el sistema. Cuando se encuentra tal coincidencia, la puntuación de coincidencia para la comparación se incrementa. Si la puntuación de coincidencia es superior o igual a la puntuación umbral, el HWID actual coincide sustancialmente con el HWID de activación.
Para cada tipo de componente, el vector de peso indica el peso que ha de asignarse a una coincidencia de ese tipo de componente. Cuando la puntuación de coincidencia se incrementa debido a una coincidencia para un tipo de componente, la puntuación de coincidencia se incrementa por el valor de peso para ese tipo de componente.
Un vector de tiempo también está asociado con el HWID almacenado. Para cada tipo de componente, el vector de tiempo puede indicar un periodo de expiración. Una vez transcurrido el periodo de expiración, incluso aunque no se haya encontrado ninguna coincidencia para un componente, la puntuación de coincidencia se incrementa por el valor de peso. De este modo se proporciona un sistema HWID que puede dar diferentes pesos a diferentes componentes y que es cada vez más tolerante de manera flexible a los cambios de hardware en un sistema informático. En una realización alternativa, sólo se usa el vector de tiempo. En otra realización alternativa, sólo se usa el vector de peso.
Dispositivo informático ejemplar
La figura 1 y el siguiente comentario pretenden proporcionar una breve descripción general de un entorno informático adecuado en el que puede implementarse la invención. Ha de entenderse, sin embargo, que se contemplan dispositivos informáticos de bolsillo, portátiles y otros y objetos informáticos de cualquier tipo para su uso en conexión con la presente invención, tal como se describió anteriormente. Por tanto, aunque a continuación se describe un ordenador de uso general, esto no es más que un ejemplo, y la presente invención puede implementarse con otros dispositivos informáticos, tales como un cliente ligero que tenga interoperabilidad e interacción red/bus. Por tanto, la presente invención puede implementarse en un entorno de servicios albergados en red en el que están implicados muy pocos o mínimos recursos de cliente, por ejemplo un entorno en red en el que el dispositivo de cliente sirve meramente como una interfaz para red/bus, tal como un objeto colocado en un aparato, o también otros dispositivos y objetos informáticos. Básicamente, cualquier lugar en el que puedan almacenarse o desde el que puedan recuperarse datos es un entorno deseable, o adecuado, de funcionamiento según la invención.
Aunque no se requiere, la invención puede implementarse mediante un sistema operativo, para su uso por un desarrollador de servicios para un dispositivo u objeto, y/o incluido dentro de un software de aplicación que opera según la invención. El software puede describirse en el contexto general de instrucciones ejecutables por ordenador, tales como módulos de programa, que se ejecutan por uno o más ordenadores, tales como estaciones de trabajo de cliente, servidores u otros dispositivos. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos y similares que realizan tareas particulares o implementan tipos de datos abstractos particulares. Normalmente, la funcionalidad de los módulos de programa puede combinarse o distribuirse según se desee en varias realizaciones. Además, los expertos en la técnica apreciarán que la invención puede ponerse en práctica con otras configuraciones informáticas. Otros sistemas, entornos y/o configuraciones informáticos ampliamente conocidos que pueden ser adecuados para su uso con la invención incluyen, aunque no se limitan a, ordenadores personales (PC), cajeros automáticos, ordenadores de servidor, dispositivos de bolsillo o portátiles, sistemas multiprocesador, sistemas basados en microprocesador, elementos electrónicos de consumo programables, PC en red, aparatos, luces, elementos de control ambiental, miniordenadores, ordenadores de gran tamaño y similares. La invención también puede ponerse en práctica en entornos informáticos distribuidos en los que las tareas se realizan por dispositivos de procesamiento remoto que están conectados a través de red/bus de comunicación u otro medio de transmisión de datos. En un entorno informático distribuido, los módulos de programa pueden ubicarse tanto en medios de almacenamiento informático locales como remotos, incluyendo dispositivos de almacenamiento de memoria, y los nodos de cliente pueden comportarse a su vez como nodos de servidor.
La figura 1 ilustra por tanto un ejemplo de un entorno 100 de sistema informático adecuado en el que puede implementarse la invención, aunque como se aclaró anteriormente, el entorno 100 de sistema informático sólo es un ejemplo de un entorno informático adecuado y no pretende sugerir ninguna limitación en cuanto al alcance del uso o funcionalidad de la invención. El entorno 100 informático tampoco ha de interpretarse como que tiene alguna dependencia o requisito respecto a cualquier componente o combinación de los mismos ilustrados en el entorno 100 operativo ejemplar.
Con referencia a la figura 1, un sistema ejemplar para implementar la invención incluye un dispositivo informático de uso general en forma de un sistema 110 informático. Los componentes del sistema 110 informático pueden incluir, aunque no se limitan a, una unidad 120 de procesamiento, una memoria 130 de sistema, y un bus 121 de sistema que acopla varios componentes de sistema incluyendo la memoria de sistema con la unidad 120 de procesamiento. El bus 121 de sistema puede ser cualquiera de varios tipos de estructuras de bus incluyendo un bus de memoria o controlador de memoria, un bus periférico y un bus local usando cualquiera de una variedad de arquitecturas de bus. A modo de ejemplo, y no de limitación, tales arquitecturas incluyen bus Industry Standard Architecture (ISA), bus Micro Channel Architecture (MCA), bus Enhanced ISA (EISA), bus local Video Electronics Standards Association (VESA) y bus Peripheral Component Interconnect (PCI) (también conocido como bus Mezzanine):
El sistema 110 informático normalmente incluye una variedad de medios legibles por ordenador. Los medios legibles por ordenador pueden ser cualquier medio disponible al que puede acceder el sistema 110 informático e incluye medios tanto volátiles como no volátiles, medios extraíbles y no extraíbles. A modo de ejemplo, y no de limitación, los medios legibles por ordenador pueden comprender medios de almacenamiento informático y medios de comunicación. Los medios de almacenamiento informático incluyen medios volátiles y no volátiles, medios extraíbles y no extraíbles implementados en cualquier procedimiento o tecnología para almacenar información tal como instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento informático incluyen, aunque no se limitan a, memoria de acceso aleatorio (RAM), memoria de sólo lectura (ROM), memoria de sólo lectura programable y borrable eléctricamente (EEPROM), memoria flash u otra tecnología de memoria, memoria de sólo lectura de disco compacto (CDROM), discos versátiles digitales (DVD) u otro almacenamiento en discos ópticos, almacenamiento en casetes magnéticos, cinta magnética, disco magnético u otros dispositivos de almacenamiento magnéticos, o cualquier otro medio que pueda usarse para almacenar la información deseada y al que pueda acceder el sistema 110 informático. Los medios de comunicación normalmente materializan instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte e incluyen cualquier medio de entrega de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características ajustadas o cambiadas de tal manera que codifica información en la señal. A modo de ejemplo, y no de limitación, los medios de comunicación incluyen medios por cable tales como una red por cable o conexión directa por cable, y medios inalámbricos tales como medios inalámbricos acústicos, RF, infrarrojo y otros. Combinaciones de cualquiera de los anteriores también tendrían que incluirse dentro del alcance de los medios legibles por ordenador.
La memoria 130 de sistema incluye medios de almacenamiento informático en forma de memoria volátil y/o no volátil tal como memoria 131 de sólo lectura (ROM) y memoria 132 de acceso aleatorio (RAM). Un sistema 133 básico de entrada/salida (BIOS), que contiene las rutinas básicas que ayudan a transferir información entre elementos dentro del sistema 110 informático, tal como durante el arranque, se almacena normalmente en ROM 131. La RAM 132 normalmente contiene datos y/o módulos de programa que están accesibles inmediatamente para y/o están operándose actualmente por la unidad 120 de procesamiento. A modo de ejemplo, y no de limitación, la figura 1 ilustra el sistema 134 operativo, programas 135 de aplicación, otros módulos 136 de programa y datos 137 de programa.
El sistema 110 informático también puede incluir otros medios de almacenamiento informático extraíbles/no extraíbles, volátiles/no volátiles. A modo de ejemplo únicamente, la figura 1 ilustra una unidad 141 de disco duro que lee desde o escribe en medios magnéticos no extraíbles, no volátiles, una unidad 151 de disco magnético que lee desde o escribe en un disco 152 magnético extraíble, no volátil, y una unidad 155 de disco óptico que lee desde o escribe en un disco 156 óptico extraíble, no volátil, tal como un CD ROM u otro medio óptico. Otros medios de almacenamiento informático extraíbles/no extraíbles, volátiles/no volátiles que pueden usarse en el entorno operativo ejemplar incluyen, aunque no se limitan a, casetes de cinta magnética, tarjetas de memoria flash, discos versátiles digitales, cintas de vídeo digital, RAM de estado sólido, ROM de estado sólido y similares. La unidad 141 de disco duro está conectada normalmente al bus 121 de sistema a través de una interfaz de memoria no extraíble tal como la interfaz 140, y la unidad 151 de disco magnético y la unidad 155 de disco óptico están conectadas normalmente al bus 121 de sistema mediante una interfaz de memoria extraíble, tal como la interfaz 150.
Las unidades y sus medios de almacenamiento informático asociados comentados anteriormente e ilustrados en la figura 1 proporcionan almacenamiento de instrucciones legibles por ordenador, estructuras de datos, módulos de programa y otros datos para el sistema 110 informático. En la figura 1, por ejemplo, la unidad 141 de disco duro está ilustrada como un sistema 144 operativo de almacenamiento, programas 145 de aplicación, otros módulos 146 de programa y datos 147 de programa. Obsérvese que estos componentes pueden ser o bien los mismos que o bien diferentes del sistema 134 operativo, programas 135 de aplicación, otros módulos 136 de programa y datos 137 de programa. Al sistema 144 operativo, a los programas 145 de aplicación, otros módulos 146 de programa y datos 147 de programa se les dan diferentes números en la presente memoria para ilustrar que, como mínimo, son copias diferentes. Un usuario puede introducir órdenes e información en el sistema 110 informático a través de dispositivos de entrada tales como un teclado 162 y un dispositivo 161 de puntero, al que habitualmente se hace referencia como ratón, bola de control del cursor o trackball o almohadilla sensible al tacto o touch pad. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, una palanca de mando o joystick, control de mando, antena parabólica, escáner, o similares. Estos y otros dispositivos de entrada están conectados a menudo a la unidad 120 de procesamiento a través de una interfaz 160 de entrada de usuario que está acoplada al bus 121 de sistema, aunque pueden estar conectados mediante otra interfaz y estructuras de bus, tales como un puerto paralelo, un puerto de juego o un bus universal en serie (USB).Una interfaz 182 gráfica, tal como Northbridge, también puede estar conectada al bus 121 de sistema. Northbridge es un conjunto de chips que se comunican con la CPU, o unidad 120 de procesamiento central, y asume la responsabilidad de las comunicaciones de puerto de gráficos acelerado (AGP). Una o más unidades 184 de procesamiento gráfico (GPU) pueden comunicarse con la interfaz 182 gráfica. A este respecto, las GPU 184 generalmente incluyen almacenamiento de memoria en chip, tal como almacenamiento de registro y las GPU 184 se comunican con una memoria 186 de vídeo. Sin embargo, las GPU 184 son sólo un ejemplo de un coprocesador y por tanto puede incluirse una variedad de dispositivos de coprocesamiento en el sistema 110 informático. Un monitor 191 u otro tipo de dispositivo de visualización también está conectado al bus 121 de sistema a través de una interfaz, tal como una interfaz 190 de vídeo, que puede comunicarse a su vez con una memoria 186 de vídeo. Además del monitor 191, los sistemas informáticos también pueden incluir otros dispositivos de salida periféricos tales como altavoces 197 e impresora 196, que pueden estar conectados a través de una interfaz 195 de salida periférica.
El sistema 110 informático puede operar en un entorno en red o distribuido usando conexiones lógicas con uno o más ordenadores remotos, tal como un ordenador 180 remoto. El ordenador 180 remoto puede ser un ordenador personal, un servidor, un encaminador o router, un PC en red, un dispositivo de tipo par u otro nodo de red común, y normalmente incluye muchos o todos los elementos anteriormente descritos con respecto al sistema 110 informático, aunque sólo se ha ilustrado un dispositivo 181 de almacenamiento de memoria en la figura 1. Las conexiones lógicas dibujadas en la figura 1 incluyen una red 171 de área local (LAN) y una red 173 de área amplia (WAN), aunque también pueden incluir otras redes/buses. Tales entornos de interconexión en red son habituales en hogares, oficinas, redes informáticas de ámbito empresarial, intranet e Internet.
Cuando se usa en un entorno de interconexión en red LAN, el sistema 110 informático se conecta a la LAN 171 a través de una interfaz de red o adaptador 170. Cuando se usa en un entorno de interconexión en red WAN, el sistema 110 informático normalmente incluye un módem 172 u otros medios para establecer comunicaciones sobre la WAN 173, tal como Internet. El módem 172, que puede ser interno o externo, puede conectarse al bus 121 de sistema a través de la interfaz 160 de entrada de usuario, u otro mecanismo apropiado. En un entorno de interconexión en red, los módulos de programa dibujados en relación al sistema 110 informático, o partes del mismo, pueden almacenarse en el dispositivo de almacenamiento de memoria remoto. A modo de ejemplo, y no de limitación, la figura 1 ilustra programas 185 de aplicación remotos residentes en el dispositivo 181 de memoria. Se apreciará que las conexiones de red mostradas son ejemplares y que pueden usarse otros medios de establecimiento de un enlace de comunicaciones entre los ordenadores.
Varios marcos informáticos distribuidos se han desarrollado y están desarrollándose a la luz de la convergencia de la informática personal e Internet. Se proporciona del mismo modo a usuarios individuales y de empresas una interfaz interoperable de transición suave y habilitada para Web para aplicaciones y dispositivos informáticos, haciendo las actividades informáticas cada vez más orientadas a redes o navegadores Web.
Por ejemplo, la plataforma .NET de MICROSOFT® incluye servidores, servicios de base o building-block services, tales como almacenamiento de datos basado en Web y software de dispositivo descargable. Aunque en la presente memoria se describen realizaciones ejemplares en conexión con software residente en un dispositivo informático, una o más partes de la invención también pueden implementarse a través de un sistema operativo, interfaz de programación de aplicaciones (API) o un objeto "de gestión intermedia" entre cualquiera de un coprocesador, un dispositivo de visualización y un objeto de petición, de modo que puede realizarse una operación según la invención por, soportado en o accediendo a través de todos los lenguajes y servicios de .NET, y también en otros marcos informáticos distribuidos.
Transacción de licencia
Una transacción de licencia se produce en el momento en que, o con posterioridad a cuando un usuario compra un producto de software para su ejecución en un sistema 110 informático. El producto de software, por ejemplo, puede ser un producto envasado en envoltura retráctil que tiene un programa de software almacenado en un medio legible por ordenador transportable, tal como un DVD, CDROM, o disquete flexible. El producto de software también puede entregarse electrónicamente sobre una red. El usuario carga el producto de software en el sistema 110 informático. Sin embargo, el software puede no ser operable sin datos de licencia. Para recibir estos datos de licencia, el usuario debe "activar" el software poniéndose en contacto con una entidad de confianza para el licenciante del software, tal como un centro de intercambio de información de licencias. Este centro de intercambio de información, por ejemplo, es el fabricante del producto o un tercero autorizado. El proceso de activación permite al comprador activar el producto de software para su instalación y uso en un sistema informático específico proporcionando al comprador los datos de licencia necesarios.
El contacto con el centro de intercambio de información puede hacerse desde el sistema 110 informático sobre una red tal como Internet o a través de una conexión de marcación a un ordenador del centro de intercambio de información, que, si la activación es satisfactoria, enviará los datos de licencia al sistema 110 informático. De manera alternativa, el producto de software soporta una activación con una ventana de diálogo de interfaz (UI) gráfica de usuario que pide al usuario que llame a un representante de servicio en el centro de intercambio de información. La ventana UI indica la información que el usuario comunica al representante de servicio, e incluye un cuadro de entrada para introducir la información de licencia obtenida desde el representante de servicio que se usa para crear los datos de licencia para permitir el uso del software.
Proporcionar ID de hardware tolerante de manera flexible basado en el tiempo y el peso
En una realización, un archivo de licencia asociado con el software incluye un HWID de activación, un vector de tiempo, un vector de peso y una puntuación umbral. Cuando ha de comprobarse la licencia, se calcula un ID de hardware (HWID) actual. Para cada tipo de componente de entre un conjunto de tipos de componente que han de considerarse, se consultan los componentes de ese tipo. Cada resultado se somete a hash. Los valores resultantes comprenden el HWID actual. Para permitir el uso del software, el HWID actual para el sistema informático debe coincidir sustancialmente con el HWID de activación. El vector de tiempo, el vector de peso y la puntuación umbral se usan para determinar si se produce una coincidencia sustancial.
En una realización, los datos 200 de licencia incluyen un HWID 210 de activación, un vector 220 de peso, un vector 230 de tiempo y una puntuación 240 umbral tal como se muestra en la figura 2. Esta información se usa para determinar en el momento de ejecución si el HWID del sistema actual indica que es aceptable para permitir el uso del software en el sistema actual.
\global\parskip0.900000\baselineskip
En una realización, con referencia a la figura 1, los tipos de componente usados para calcular un HWID son: la tarjeta de sonido (ubicada en la interfaz 195 de salida periférica); la tarjeta de red (ubicada en la interfaz 170 de red), el BIOS 133; la unidad 155 de CDROM, el adaptador de pantalla (que comprende la GPU 184); el dispositivo 151 de disco, el adaptador SCSI, el adaptador de disco, el procesador 120, y la RAM 132. Por supuesto, pueden emplearse otros componentes sin alejarse del espíritu y el alcance de la presente invención, y puede usarse cualquier combinación de uno o más de estos componentes.
Cuando se calcula un HWID, se ejecutan consultas plug and play (PnP) u otras consultas para determinar los identificadores para estos componentes. Algunos, tal como el procesador 120, pueden identificarse mediante un número de serie. Otros, tal como el BIOS 133, pueden identificarse mediante una parte de BIO 133, por ejemplo los dos primeros kilobytes del BIOS almacenado en la ROM 131. La RAM 132, por ejemplo, puede identificarse mediante la capacidad de almacenamiento total de la misma.
Como un ejemplo adicional, la tarjeta de red puede identificarse mediante una dirección MAC. La dirección MAC (control de acceso a medios) es una dirección única que identifica la tarjeta de red. En una red de área local (LAN) u otra red, la dirección MAC se usa como el número de hardware único del sistema informático. Cuando el sistema informático está conectado a Internet, este número se usa para indexar la dirección IP correcta para el sistema informático. La dirección MAC de una tarjeta de red es un número único que se graba en la tarjeta de red por su fabricante. Se asignan bloques de direcciones a cada fabricante de tarjetas de red, y se codifican de manera fija (hard-coded) en los chips en sus tarjetas de red.
Como se muestra, el HWID 210 de activación incluye, para cada tipo de componente, el número de componentes de ese tipo que existía en la activación. El HWID 210 de activación también incluye un valor para cada componente. En una realización, los identificadores de hardware se someten a hash para producir un valor sometido a hash, que se incluye en el HWID. Por ejemplo, como se muestra en la figura 2, se instalaron cuatro CDROM en el momento de la activación. En una realización, el valor sometido a hash para cada componente se almacena en el HWID. Por ejemplo, cdrom1, cdrom2, cdrom3 y cdrom4 son los identificadores sometidos a hash para los cuatro CDROM en el HWID 210 de activación ejemplar.
En una realización, la función hash usada para someter a hash los identificadores de componentes es una función de módulo. Por ejemplo, el valor sometido a hash BIOS1 que representa el componente BIOS en HWID 210 podrían ser los dos primeros kilobytes del BIOS, módulo 8. Por supuesto, también puede emplearse cualquier otra función hash sin apartarse del espíritu y el alcance de la presente invención.
En una realización, también se incluye en los datos 200 de licencia un vector 220 de peso y una puntuación 240 umbral. Cuando un HWID recién calculado se compara con un HWID 210 de activación de modo que puede efectuarse la determinación de si el sistema informático permitirá ejecutar el software correspondiente a los datos 200 de licencia, se consulta cada componente de un tipo específico de componente presente en el sistema. Para cada componente presente de un tipo específico de componente, la consulta se somete a hash para crear un identificador de componente
sometido a hash. Estos identificadores de componentes sometidos a hash se incluyen en el HWID recién calculado.
El HWID de activación y el HWID recién calculado se comparan. Se guarda una puntuación de coincidencia total acumulada. Para cada tipo de componente, si cualquiera de estos valores sometido a hash para un componente de ese tipo en el HWID recién calculado coincide con cualquiera de los valores sometidos a hash para ese tipo de componente en el HWID 210 de activación, entonces la puntuación de coincidencia se incrementa. Una vez calculada la puntuación de coincidencia, si la puntuación de coincidencia es superior o igual a la puntuación umbral, el HWID actual coincide sustancialmente con el HWID de activación. En otra realización, los HWID deben coincidir exactamente para que se incremente la puntuación de coincidencia. En otra realización, cada componente de un tipo dado presente en el HWID de activación debe estar presente en el HWID recién calculado para que se incremente la puntuación de coincidencia para ese tipo de componente. También se contemplan otros medios para determinar una coincidencia entre los HWID para un tipo de componente, y pueden emplearse sin alejarse del espíritu y el alcance de la invención.
El vector 220 de peso controla la magnitud del incremento. Por ejemplo, un identificador de BIOS coincidente incrementará la puntuación de coincidencia en tres, mientras que un identificador de CDROM coincidente sólo incrementará la puntuación de coincidencia en uno.
Adicionalmente, en una realización, el vector 230 de tiempo puede emplearse cuando se calcula la puntuación de coincidencia. Para cualquier componente, si el vector 230 de tiempo contiene un valor para ese componente, éste es la expiración para el uso de ese componente al comparar los dos HWID. Por ejemplo, en datos 200 de licencia ejemplares, como se ve en la figura 2, se almacena un periodo de tiempo para algunos componentes. En los datos 200 de licencia ejemplares, dos años es el periodo de tiempo almacenado para los componentes de CDROM. Por tanto, si han pasado dos años desde la concesión de la licencia, un valor no coincidente correspondiente a los CDROM actualmente presentes en el sistema informático no afectará negativamente a la puntuación de coincidencia. Por lo tanto, la puntuación de coincidencia se incrementará en uno (el valor en el vector 220 de peso) independientemente de si se encuentra un CDROM en el sistema informático cuyo identificador coincide con los valores almacenados en el HWID 210 de activación (a saber, cdrom1, cdrom2, cdrom3 y cdrom4). En otra realización, la puntuación de coincidencia se incrementa en un valor especificado previamente (con independencia del valor del vector 220 de peso) cuando la puntuación de coincidencia se incrementa debido a expiración en lugar de debido a una coincidencia.
\global\parskip1.000000\baselineskip
Para permitir que tenga lugar una expiración, puede incluirse una fecha de licencia en los datos 200 de licencia. De manera alternativa, cada valor del vector 230 de tiempo puede expresarse como una fecha fija. Adicionalmente, pueden implementarse medidas de seguridad para garantizar que la puesta a cero de un reloj de sistema no entorpece la comparación de fechas. Cuando no existen datos válidos en el vector 230 de tiempo para un tipo de componente (en una realización, cuando el valor se pone a cero), el componente se usa siempre para determinar la puntuación de coincidencia. Por ejemplo, el vector 230 de tiempo indica que sólo expiran componentes de MAC, CDROM y pantalla. Otros componentes no lo hacen.
En una realización, sólo se incluye un vector de peso pero no un vector de tiempo en los datos de licencia. En esta realización, para comparar dos HWID, se considera cada componente, y la puntuación de coincidencia se incrementa sólo si hay una coincidencia. Como se muestra en la figura 3, en la etapa 310, se obtiene la información de identidad actual para cada uno de los componentes relevantes del sistema. En la etapa 320, la información de identidad actual se compara con la información de identidad de componente almacenada del HWID de activación. Si se usa una función hash, la información de identidad se somete a hash y se compara con la información de identidad de componente almacenada, que también se ha sometido a hash. En la etapa 330, cuando hay una coincidencia para un tipo dado de componente, se incrementa una puntuación de coincidencia en el valor en el vector de peso asociado con ese tipo de componente. Y en la etapa 340, una vez considerados todos los componentes, la puntuación de coincidencia se compara con la puntuación de coincidencia umbral para determinar si la coincidencia ha sido satisfactoria. Esta prueba puede usarse de varias formas. Por ejemplo, si la comparación se hace para determinar si un sistema tiene licencia para ejecutar software, si la coincidencia es satisfactoria, el sistema informático tiene permiso para ejecutar el software.
En otra realización, sólo se incluye un vector de tiempo, pero no un vector de peso en los datos 200 de licencia. En esta realización, cuando se encuentra una coincidencia de componente, se suma el mismo valor a la puntuación de coincidencia, independientemente del tipo de componente que esté comparándose. Sin embargo, si el valor de tiempo especificado para el tipo de componente ha pasado, incluso aunque no se encuentre coincidencia, la puntuación de coincidencia se incrementará. Como se muestra en la figura 4, en la etapa 410, se obtienen los componentes del HWID, la información de identidad actual para cada uno de los componentes relevantes del sistema. En la etapa 420, la información de identidad actual se compara con la información de identidad de componente almacenada del HWID 210 de activación. En la etapa 430, cuando hay una coincidencia para un tipo dado de componente o cuando ha pasado el periodo de expiración para ese tipo de componente, la puntuación de coincidencia se incrementa. Como antes, en la etapa 440, la puntuación de coincidencia se compara con la puntuación de coincidencia umbral para determinar si la coincidencia ha sido satisfactoria.
En una realización, se incluye una puntuación de coincidencia en los datos 200 de licencia. En otra realización, se "graba a fuego" una puntuación de coincidencia en el cálculo de si está presente una coincidencia sustancial. Por tanto, los datos 200 de licencia pueden incluir simplemente un vector de tiempo, simplemente un vector de peso, o un vector tanto de tiempo como de peso, y en cualquiera de estas combinaciones puede incluir una puntuación de coincidencia o, de manera alternativa, puede basarse en una puntuación de coincidencia "grabada a fuego" en el cálculo de si está presente una coincidencia sustancial.
Al usar un vector de tiempo, un vector de peso, o ambos, la licencia ya no son datos pasivos, sino que desempeña un papel en los datos de comparación de licencia. El licenciante o el centro de intercambio de información pueden tener más control sobre la experiencia del usuario. Por ejemplo, el licenciante puede encuestar a los usuarios y descubrir que un porcentaje significativo de ellos cambiará las tarjetas de vídeo cada dos años. Esto puede hacer que el licenciante establezca el valor de tiempo para las tarjetas de vídeo en nuevas licencias en dos años. Posteriormente, puede determinarse que llegarán al mercado nuevas tarjetas de vídeo en seis meses, y que la mayoría de usuarios cambiará entonces su tarjeta de vídeo. El licenciante puede establecer el valor de tiempo en seis meses en las nuevas licencias. Puede determinarse que hay una amplia variación en cuándo los usuarios cambian las unidades de CDROM, pero otros valores de tiempo son muy precisos a la hora de describir el comportamiento del usuario. Esto puede hacer que el licenciante establezca el valor de peso para las unidades de CDROM más bajo que los valores de peso para otros componentes.
En una realización, se usa un vector de peso para reaccionar a cambios en la información relativa al usuario. Un usuario obtiene una primera licencia de software. Entonces, por ejemplo, cuando ha expirado un periodo de evaluación, el usuario obtiene una segunda licencia de software. El primer HWID de activación se compara con el segundo HWID de activación, y se ajustan apropiadamente valores de peso para componentes. En una realización de este tipo, a los componentes que se han cambiado se les da un peso aumentado con respecto a los componentes que no se han cambiado. Esto refleja una suposición de que un componente que se ha cambiado recientemente no se volverá a cambiar. En otra realización de este tipo, a los componentes que se han cambiado se les da un peso disminuido con respecto a componentes que no se han cambiado. Esto refleja una suposición de que es probable que el usuario pruebe o cambie componentes que el usuario ha cambiado históricamente.
Conclusión
Como se mencionó anteriormente, aunque se han descrito realizaciones ejemplares de la presente invención en conexión con diversos dispositivos informáticos y arquitecturas de red, los conceptos subyacentes pueden aplicarse a cualquier dispositivo informático o sistema en el que es deseable implementar un ID de hardware. Por tanto, los procedimientos y sistemas de la presente invención pueden aplicarse a una variedad de aplicaciones y dispositivos. Por ejemplo, el(los) algoritmo(s) de la invención pueden aplicarse al sistema operativo de un dispositivo informático, proporcionado como un objeto separado en el dispositivo, como parte de otro objeto, como un objeto descargable desde un servidor, como una "gestión intermedia" entre un dispositivo u objeto y la red, como un objeto distribuido, etc. Aunque se escogen lenguajes de programación, nombres y ejemplos ejemplares en la presente memoria como representativos de diversas elecciones, estos leguajes, nombres y ejemplos no pretenden ser limitantes. Un experto en la técnica apreciará que hay numerosas formas de proporcionar código de objeto que logre los mismos, similares o equivalentes sistemas y procedimientos logrados por la invención.
Las diversas técnicas descritas en la presente memoria pueden implementarse en conexión con hardware o software o, si resulta apropiado, con una combinación de ambos. Por tanto, los procedimientos y el aparato de la presente invención, o ciertos aspectos o partes de la misma, pueden adoptar la forma de código de programa (es decir, instrucciones) materializadas en medios tangibles, tales como disquetes flexibles, CD-ROM, discos duros, o cualquier otro medio de almacenamiento legible por máquina, en los que, cuando el código de programa se carga en y se ejecuta por una máquina, tal como un ordenador, la máquina se convierte en un aparato para la puesta en práctica de la invención. En el caso de la ejecución de código de programa en ordenadores programables, el dispositivo informático incluirá generalmente un procesador, un medio de almacenamiento legible por el procesador (incluyendo elementos de almacenamiento y/o memoria volátiles y no volátiles), al menos un dispositivo de entrada, y al menos un dispositivo de salida. Uno o más programas que pueden utilizar los servicios de procesamiento de señales de la presente invención, por ejemplo, mediante el uso de una API de procesamiento de datos o similar, se implementan preferiblemente en un lenguaje de programación orientado a objetos o de procedimiento de alto nivel para comunicarse con un ordenador. Sin embargo, el(los) programa(s) puede(n) implementarse en lenguaje ensamblador o máquina, si se desea. En cualquier caso, el lenguaje puede ser un lenguaje compilado o interpretado, y puede combinarse con implementaciones de hardware.
Los procedimientos y aparatos de la presente invención también pueden ponerse en práctica mediante comunicaciones materializadas en forma de código de programa que se transmite sobre algún medio de transmisión, tal como sobre cableado o hilo eléctrico, mediante fibra óptica, o mediante cualquier otra forma de transmisión, en las que, cuando el código de programa se recibe y se carga en y se ejecuta por una máquina, tal como una EPROM, una disposición de puerta, un dispositivo lógico programable (PLD), un ordenador de cliente, un grabador de vídeo o similar, o una máquina receptora que tiene las capacidades de procesamiento de señales descritas en las realizaciones ejemplares anteriores se convierte en un aparato para la puesta en práctica de la invención. Cuando se implementa en un procesador de uso general, el código de programa se combina con el procesador para proporcionar un aparato único que opera para invocar la funcionalidad de la presente invención. Adicionalmente, cualquier técnica de almacenamiento usada en conexión con la presente invención puede ser de manera invariable una combinación de hardware y software.
Aunque la presente invención se ha descrito en conexión con las realizaciones preferidas de las diversas figuras, ha de entenderse que pueden usarse otras realizaciones similares o que pueden realizarse modificaciones y adiciones a la realización descrita para realizar la misma función de la presente invención sin desviarse de la misma. Además, ha de enfatizarse que se contempla una variedad de plataformas informáticas, incluyendo sistemas operativos de dispositivo de bolsillo y otros sistemas operativos de aplicación específica, específicamente a medida que el número de dispositivos en red inalámbricos sigue proliferando. Adicionalmente aún, la presente invención puede implementarse en o a través de una pluralidad de chips o dispositivos de procesamiento, y el almacenamiento puede realizarse de manera similar a través de una pluralidad de dispositivos. Por lo tanto, la presente invención no debe limitarse a una única realización, sino que más bien debe interpretarse en la amplitud y el alcance según las reivindicaciones adjuntas.

Claims (22)

1. Un procedimiento para permitir el cumplimiento de los términos de licencia de software para un producto de software para su uso con un sistema informático que comprende uno o más componentes, comprendiendo el procedimiento:
para cada tipo de componente de entre un conjunto de tipos de componente, obtener (410) una identidad de componente actual asociada a partir de dicho sistema informático;
para cada tipo de componente de entre dicho conjunto de tipos de componente, comparar (420) dicha identidad de componente actual asociada con una identidad de componente almacenada asociada;
calcular (430) una puntuación de coincidencia determinando, para cada tipo de componente de entre dicho conjunto de tipos de componente, si ha pasado un periodo de expiración asociado usando un vector de tiempo que indica para cada tipo de componente un periodo de expiración, si los resultados de dicha comparación son positivos, incrementar dicha puntuación de coincidencia, y si los resultados de dicha comparación no son positivos y si el periodo de expiración asociado ha pasado, incrementar dicha puntuación de coincidencia;
comparar (440) dicha puntuación de coincidencia con una puntuación de coincidencia umbral; y
permitir que el sistema informático ejecute el producto de software si la puntuación de coincidencia es superior o igual a la puntuación de coincidencia umbral.
2. El procedimiento según la reivindicación 1, en el que dicha etapa de obtener (410), para cada tipo de componente de entre dicho conjunto de tipos de componente, una identidad de componente actual asociada comprende:
obtener una identidad de componente actual individual asociada para todos los componentes de ese tipo de componente.
3. El procedimiento según las reivindicaciones 1 y 2, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dicha etapa de comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprende:
dar un resultado positivo si cualquiera de dichas identidades de componente almacenadas individuales asociadas coincide con cualquiera de dichas identidades de componente actuales individuales asociadas.
4. El procedimiento según las reivindicaciones 1 y 2, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dicha etapa de comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprende:
dar un resultado positivo si todas dichas identidades de componente almacenadas individuales asociadas coinciden con cualquiera de dichas identidades de componente actuales individuales asociadas.
5. El procedimiento según las reivindicaciones 1 a 4, en el que dicha etapa de obtener (410), para cada tipo de componente de hardware de entre un conjunto de tipos de componente de hardware, una identidad de componente existente asociada comprende:
consultar un componente de hardware del tipo de componente de hardware para obtener un resultado de consulta; y
someter a hash el resultado de consulta.
6. El procedimiento según las reivindicaciones 1 a 5, en el que dicho conjunto de tipos de componente comprende uno o más seleccionados de entre los siguientes:
tarjeta de sonido, tarjeta de red, BIOS, unidad de CDROM, adaptador de pantalla, dispositivo de disco, adaptador SCSI, adaptador de disco, procesador y RAM.
7. El procedimiento según una de las reivindicaciones 1 a 6, en el que la identidad de componente almacenada está almacenada en una estructura (200) de datos de licencia para permitir que se cumplan los términos de licencia de software para un producto de software para su uso con un sistema informático que comprende uno o más componentes de uno o más tipos de componente, comprendiendo la estructura (200) de datos de licencia:
un ID (210) de hardware que comprende una pluralidad de valores, correspondiendo cada valor a una identidad de componente para uno de dichos componentes;
un vector (230) de tiempo que comprende, para cada uno de al menos uno de dichos tipos de componente, un valor de expiración para dicho tipo de componente.
8. El procedimiento según la reivindicación 7, en el que la estructura de datos de licencia comprende además: una puntuación umbral para determinar si dicho ID de hardware coincide sustancialmente con un segundo ID de hardware.
9. El procedimiento según la reivindicación 7, en el que la estructura de datos de licencia comprende además:
un vector de peso que comprende, para cada uno de dichos uno o más tipos de componente, un valor de peso para dicho tipo de componente.
10. El procedimiento según las reivindicaciones 7 ó 9, en el que la estructura de datos de licencia comprende además:
una puntuación umbral para determinar si dicho ID de hardware coincide sustancialmente con un segundo ID de hardware.
11. Un medio legible por ordenador para permitir el cumplimiento de los términos de licencia de software para un producto de software para su uso con un sistema informático que comprende uno o más componentes, que tiene almacenado en el mismo al menos un módulo ejecutable por ordenador que comprende instrucciones ejecutables por ordenador para llevar a cabo un procedimiento, comprendiendo el procedimiento:
para cada tipo de componente de entre un conjunto de tipos de componente, obtener (410) una identidad de componente actual asociada de dicho sistema informático;
para cada tipo de componente de entre dicho conjunto de tipos de componente, comparar (420) dicha identidad de componente actual asociada con una identidad de componente almacenada asociada;
calcular (430) una puntuación de coincidencia determinando, para cada tipo de componente de entre dicho conjunto de tipos de componente, si ha pasado un periodo de expiración asociado usando un vector de tiempo que indica, para cada tipo de componente, un periodo de expiración, si los resultados de dicha comparación son positivos, incrementar dicha puntuación de coincidencia, y si los resultados de dicha comparación no son positivos y si el periodo de expiración asociado ha pasado, incrementar dicha puntuación de coincidencia;
comparar (440) dicha puntuación de coincidencia con una puntuación de coincidencia umbral; y
permitir que el sistema informático ejecute el producto de software si la puntuación de coincidencia es superior o igual a la puntuación de coincidencia umbral.
12. El medio legible por ordenador según la reivindicación 11, en el que dicha etapa de obtener (410), para cada tipo de componente de entre dicho conjunto de tipos de componente, una identidad de componente actual asociada comprende:
obtener una identidad de componente actual individual asociada para todos los componentes de ese tipo de componente.
13. El medio legible por ordenador según las reivindicaciones 11 y 12, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dicha etapa de comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprende:
dar un resultado positivo si cualquiera de dichas identidades de componente almacenadas individuales asociadas coincide con cualquiera de dichas identidades de componente actuales individuales asociadas.
14. El medio legible por ordenador según las reivindicaciones 11 y 12, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dicha etapa de comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprende:
dar un resultado positivo si todas dichas identidades de componente almacenadas individuales asociadas coinciden con cualquiera de dichas identidades de componente actuales individuales asociadas.
15. El medio legible por ordenador según las reivindicaciones 11 a 14, en el que dicha etapa de obtener (410), para cada tipo de componente de hardware de entre un conjunto de tipos de componente de hardware, una identidad de componente existente asociada comprende:
consultar un componente de hardware del tipo de componente de hardware para obtener un resultado de consulta; y
someter a hash el resultado de consulta.
16. El medio legible por ordenador según las reivindicaciones 11 a 15, en el que dicho conjunto de tipos de componente comprende uno o más seleccionados de entre los siguientes:
tarjeta de sonido; tarjeta de red, BIOS, unidad CDROM, adaptador de pantalla, dispositivo de disco, adaptador SCSI, adaptador de disco, procesador y RAM.
17. Un dispositivo informático para permitir el cumplimiento de los términos de licencia de software para un producto de software para su uso con un sistema informático que comprende uno o más componentes, que comprende:
medios para obtener, para cada tipo de componente de entre un conjunto de tipos de componente, una identidad de componente actual asociada de dicho sistema informático;
medios para comparar, para cada tipo de componente de entre dicho conjunto de tipos de componente, dicha identidad de componente actual asociada con una identidad de componente almacenada asociada;
medios para calcular una puntuación de coincidencia determinando, para cada tipo de componente de entre dicho conjunto de tipos de componente, si ha pasado un periodo de expiración asociado usando un vector de tiempo que indica, para cada tipo de componente un periodo de expiración, si los resultados de dicha comparación son positivos, incrementar dicha puntuación de coincidencia, y si los resultados de dicha comparación no son positivos y si el periodo de expiración asociado ha pasado, incrementar dicha puntuación de coincidencia;
medios para comparar dicha puntuación de coincidencia con una puntuación de coincidencia umbral; y
medios para permitir que el sistema informático ejecute el producto de software si la puntuación de coincidencia es superior o igual a la puntuación de coincidencia umbral.
18. El dispositivo informático según la reivindicación 17, en el que dichos medios para obtener, para cada tipo de componente de entre dicho conjunto de tipos de componente, una identidad de componente actual asociada comprende:
medios para obtener una identidad de componente actual individual asociada para todos los componentes de ese tipo de componente.
19. El dispositivo informático según las reivindicaciones 17 y 18, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dichos medios para comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprenden:
medios para dar un resultado positivo si cualquiera de dichas identidades de componente almacenadas individuales asociadas coincide con cualquiera de dichas identidades de componente actuales individuales asociadas.
20. El dispositivo informático según las reivindicaciones 17 y 18, en el que, para al menos un tipo de componente de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente almacenada asociada comprende una o más identidades de componente almacenadas individuales asociadas, y en el que dichos medios para comparar, para cada tipo de componente de hardware de entre dicho conjunto de tipos de componente de hardware, dicha identidad de componente existente asociada con una identidad de componente almacenada asociada comprenden:
medios para dar un resultado positivo si todas dichas identidades de componente almacenadas individuales asociadas coinciden con cualquiera de dichas identidades de componente actuales individuales asociadas.
21. El dispositivo informático según las reivindicaciones 17 a 20, en el que dichos medios para obtener, para cada tipo de componente de hardware de entre un conjunto de tipos de componente de hardware, una identidad de componente existente asociada comprenden:
medios para consultar un componente de hardware del tipo de componente de hardware para obtener un resultado de consulta; y
medios para someter a hash el resultado de consulta.
22. El dispositivo informático según las reivindicaciones 17 a 21, en el que dicho conjunto de tipos de componente comprende uno o más seleccionados de entre los siguientes:
tarjeta de sonido; tarjeta de red, BIOS, unidad de CDROM, adaptador de pantalla, dispositivo de disco, adaptador SCSI, adaptador de disco, procesador y RAM.
ES03029937T 2003-01-06 2003-12-29 Sistemas y procedimientos para proporcionar id de hardware tolerante de manera flexible basado en el tiempo y el peso. Expired - Lifetime ES2318085T3 (es)

Applications Claiming Priority (2)

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
US337064 2003-01-06

Publications (1)

Publication Number Publication Date
ES2318085T3 true ES2318085T3 (es) 2009-05-01

Family

ID=32655428

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03029937T Expired - Lifetime ES2318085T3 (es) 2003-01-06 2003-12-29 Sistemas y procedimientos para proporcionar id de hardware tolerante de manera flexible basado en el tiempo y el peso.

Country Status (14)

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

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
BRPI0400061B1 (pt) 2016-08-09
EP1452940A1 (en) 2004-09-01
BRPI0400061A (pt) 2004-10-19
JP2004213676A (ja) 2004-07-29
AU2004200043A1 (en) 2004-07-22
DE60325550D1 (de) 2009-02-12
US20080040619A1 (en) 2008-02-14
CN1609746A (zh) 2005-04-27

Similar Documents

Publication Publication Date Title
ES2318085T3 (es) Sistemas y procedimientos para proporcionar id de hardware tolerante de manera flexible basado en el tiempo y el peso.
KR101219819B1 (ko) 디지털 어플리케이션을 라이센싱하기 위한 유연한 라이센싱 아키텍처
US7849329B2 (en) Licensing the use of a particular feature of software
US7827550B2 (en) Method and system for measuring a program using a measurement agent
US20050177823A1 (en) License management
US20020007456A1 (en) Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US20040015694A1 (en) Method and apparatus for authenticating an open system application to a portable IC device
US20080300887A1 (en) Usage Model of Online/Offline License for Asset Control
BRPI0615811A2 (pt) sistema operacional encerrado em unidade de processamento
US20070168574A1 (en) System and method for securing access to general purpose input/output ports in a computer system
BRPI0801772B1 (pt) Método implementado por computador, sistema de tratamento de informação e meio de armazenamento legível por computador
JPH11345117A (ja) プログラムの不正実行防止機能付きプロセッサ、プロセッサが実行するインストラクション、及びプログラムの不正実行防止方法
JP2004038247A (ja) ライセンス管理方法、ライセンス管理システム、ライセンス管理プログラム
US7765407B2 (en) Method and apparatus for providing centralized user authorization to allow secure sign-on to a computer system
US11914717B2 (en) Information handling systems and related methods to cryptographically verify information handling system platform components and track events associated with the platform components
JP4017149B2 (ja) プログラムの不正実行防止機能付きプロセッサ
JP2004046756A (ja) ライセンス管理方法、ライセンス管理システム、ライセンス管理プログラム
KR20080088911A (ko) 메모리의 배드정보를 암호화키로 사용하는 데이터저장카드, 연결장치 및 그 방법
Myers Programming with explicit security policies
JP2001222509A (ja) 指紋認証を備えたソフトウェア初期化方法と、ソフトウェア初期化方法を備えた情報処理装置
TWM398679U (en) Portable memory device with multiple partitions