MXPA04002024A - Sistema para unir secretos a un sistema de computadora que tiene tolerancia para cambios de hardware. - Google Patents

Sistema para unir secretos a un sistema de computadora que tiene tolerancia para cambios de hardware.

Info

Publication number
MXPA04002024A
MXPA04002024A MXPA04002024A MXPA04002024A MXPA04002024A MX PA04002024 A MXPA04002024 A MX PA04002024A MX PA04002024 A MXPA04002024 A MX PA04002024A MX PA04002024 A MXPA04002024 A MX PA04002024A MX PA04002024 A MXPA04002024 A MX PA04002024A
Authority
MX
Mexico
Prior art keywords
class
component
primary
classes
computer system
Prior art date
Application number
MXPA04002024A
Other languages
English (en)
Inventor
T Hughes Aidan
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
Publication of MXPA04002024A publication Critical patent/MXPA04002024A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • DTEXTILES; PAPER
    • D01NATURAL OR MAN-MADE THREADS OR FIBRES; SPINNING
    • D01DMECHANICAL METHODS OR APPARATUS IN THE MANUFACTURE OF ARTIFICIAL FILAMENTS, THREADS, FIBRES, BRISTLES OR RIBBONS
    • D01D1/00Treatment of filament-forming or like material
    • D01D1/10Filtering or de-aerating the spinning solution or melt
    • D01D1/106Filtering
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P31/00Antiinfectives, i.e. antibiotics, antiseptics, chemotherapeutics
    • A61P31/04Antibacterial agents
    • 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]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/00731Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction
    • G11B20/00746Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction wherein the usage restriction can be expressed as a specific number
    • G11B20/00782Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction wherein the usage restriction can be expressed as a specific number wherein the usage restriction limits the number of times a program can be installed

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Organic Chemistry (AREA)
  • General Chemical & Material Sciences (AREA)
  • Veterinary Medicine (AREA)
  • General Health & Medical Sciences (AREA)
  • Mechanical Engineering (AREA)
  • Textile Engineering (AREA)
  • Animal Behavior & Ethology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Pharmacology & Pharmacy (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Medicinal Chemistry (AREA)
  • Public Health (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Chemical & Material Sciences (AREA)
  • Oncology (AREA)
  • Communicable Diseases (AREA)
  • Storage Device Security (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Joining Of Building Structures In Genera (AREA)
  • Package Frames And Binding Bands (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)

Abstract

Se describen sistemas y metodos para unir un secreto a un sistema de computadora. Tambien se describen sistemas y metodos para generar una identificacion de hardware fuerte (SHWID) para un sistema de computo dado. La identificacion de hardware fuerte (SHWID) esta acoplada a un secreto unido. La identificacion de hardware fuerte (SHWID) se puede utilizar para controlar el uso de software en un sistema de computo dado o dependiendo del grado de cambios de hardware al sistema de computo.

Description

SISTEMA PARA UNIR SECRETOS A UN SISTEMA DE COMPUTADORA QUE TIENE TOLERANCIA PARA CAMBIOS DE HARDWARE CAMPO DE LA INVENCION La presente invención se refiere a sistemas y métodos para unir un secreto a un sistema de cómputo dado. La presente invención también se refiere a sistemas y métodos para generar una identificación de hardware (equipo físico, maquinaria) fuerte para un sistema de cómputo dado, en un componente de la identificación fuerte de hardware está acoplada a un secreto unido. La identificación hardware fuerte resultante puede ser utilizada paca controlar el uso de software (programas, instrucciones, aplicaciones, etc.) en el sistema de cómputo dado dependiendo del grado de cambios de hardware para el sistema de cómputo.
ANTECEDENTES DE LA INVENCION Ha existido un considerable esfuerzo en los últimos años para prevenir o reducir al mínimo el uso ilegal de software de computadora. Debido a esta capacidad de reproducción y facilidad de reproducción, la piratería de software de computadora y el uso ilegal de software de computadora más allá del alcance de un acuerdo de licencia son ocurrencias comunes que significativamente dañan a los fabricantes de software. Se han desarrollado métodos en un esfuerzo para reducir las ocurrencias de piratería de software de computadora y uso ilegal de software de computadora más allá del alcance de un acuerdo de licencia. Sin embargo, dichos métodos por lo general ocasionan problemas para los compradores y usuarios legítimos de software en la forma de inconveniencia de consumidor. Por ejemplo, un usuario quien ha actualizado su computadora debe ser capaz de reinstalar legítimamente el producto se software en la máquina actualizada. Sin embargo, los métodos actualmente disponibles pueden tanto (i) no permitir que el software sea instalado, como (¡i) forzar al usuario (quien ahora está descontento) a llamar al fabricante de software para solicitar ayuda. Por consiguiente, permanece la necesidad de soluciones de tecnología mejoradas a la piratería y el uso ilícito, pero que también reconozca y adapte las necesidades y prácticas de un comprador y usuario de software legítimos.
COMPENDIO DE LA INVENCION La presente invención dirige algunas de las dificultades y problemas discutidos anteriormente a través del descubrimiento de un método para unir un secreto a un sistema de cómputo dado, y una identificación mejorada de hardware acoplada al secreto. La identificación de hardware de la presente invención proporciona un método para reducir al mínimo o prevenir la piratería de software y el uso ilegal de software de computadora más allá del alcance de un acuerdo de licencia, mientras se permitan actualizaciones de la máquina por usuarios de software legítimos. La identificación de hardware de la presente invención, denominada en la presente como una "identificación fuerte de hardware" (SHWID, según sus siglas en inglés), comprende dos componentes separados: (1) un componente de identificación de hardware y (2) un componente de secreto parcial. Al combinar (1) un componente de identificación de hardware junto con (2) un componente de secreto parcial, se genera una identificación de hardware fuerte más segura y confiable (SHWID) para un sistema de cómputo dado. La identificación de hardware fuerte (SHWID) puede ser utilizada para identificar una configuración de hardware dada cuando se carga un producto de software en la computadora. La identificación de hardware fuerte (SHWID) puede ser almacenada para uso futuro, tal como (i) cuando el mismo producto de software es lanzado o enviado a la misma computadora o una variación de la misma computadora, o (ii) cuando el mismo producto de software se vuelva a cargar en una variación de la misma computadora o en una computadora completamente diferente. Por ejemplo, cuando se lanza el mismo producto de software en la misma computadora o una variación de la misma computadora, se hace una determinación de que si el secreto, acoplado a la identificación de hardware fuerte original (SHWID), puede ser producido. Si el secreto puede ser producido, el método de la presente invención permite que el producto de software sea cargado. Sin embargo, si el secreto no puede ser producido, el método de la presente invención no permitirá que el producto de software sea cargado debido a cambios al sistema de hardware original más allá de un umbral deseado. Por consiguiente, la presente invención está dirigida a un método para unir un secreto a un sistema de cómputo dado, y una identificación fuerte de hardware (SHWID) acoplada al secreto. La presente invención además está dirigida a un método para prevenir el uso de software en un sistema de computadora si el secreto acoplado a la identificación fuerte de hardware original (SHWID) no puede ser recuperada en el sistema de cómputo. Estos y otros aspectos y ventajas de la presente invención será más evidente después de una revisión de la siguiente descripción detalla de las modalidades descritas y las reivindicaciones anexas.
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 es un diagrama de flujo de algunos componentes primarios de un ambiente de operación ilustrativo para la ímplementación de la presente invención; La Figura 2 es un diagrama de flujo que muestra pasos ilustrativos para determinar el componente de identificación de hardware de la identificación fuerte de hardware (SHWID); Las Figuras 3-4 son un diagrama de flujo mostrando pasos ilustrativos para determinar un componente secreto parcial de la identificación fuerte de hardware (SHWID); La Figura 5 es un diagrama de flujo que muestra pasos ilustrativos de combinar el componente de identificación de hardware y el componente de secreto parcial de la identificación fuerte de hardware (SHWID); y Las Figuras 6-7 son un diagrama de flujo que muestran pasos ilustrativos para determinar si un producto de software puede ser utilizado en un sistema de hardware de computadora utilizando la recuperación de un secreto unido como el facto que habilita el producto de software.
DESCRIPCION DETALLA DE LA INVENCION Para promover un entendimiento de los principios de la presente invención, se utilizan descripciones de modalidades específicas de la invención y un lenguaje específico para describir las modalidad específicas. Sin embargo, se entenderá que no se pretende ninguna limitación del alcance de la invención a través del uso de un lenguaje específico. Se contemplan alteraciones, otras modificaciones, y dichas otras aplicaciones de los principios de la presente invención discutida como normalmente podrían ocurrirse a algún experto en la técnica a la cual pertenece la invención. La presente invención está dirigida a un método para unir un secreto a un sistema de cómputo dado, y una identificación fuerte de hardware (SHWID) acoplada al secreto. El secreto típicamente comprende un número entero aleatoriamente seleccionado. El secreto deseablemente tiene las siguientes características: (1) Secreto, S, es computable en una configuración de hardware H; (2) Secreto, S, es computable en una configuración de hardware H,, la cual es la configuración de hardware H después de una cantidad de cambio de componente para una cantidad de umbral deseada del cambio de componente; y (3) Secreto, S, es virtualmente imposible de calcular en cualquier otra configuración de hardware H2. El secreto puede ser utilizado para generar una identificación fuerte de hardware (SHWID) para un sistema de cómputo dado comprendiendo una variedad de componentes de hardware. Un sistema de cómputo ilustrativo puede comprender un número de clases de componente de hardware incluyendo, pero no limitándose a, unidades de disco duro, unidades de disco óptico tales como unidad de CD-ROM, tarjetas de red, adaptadores de presentación, memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), y un sistema básico de entrada/salida (BIOS). Un sistema de cómputo ilustrativo y un ambiente de operación ilustrativo para practicar la presente invención se describen a continuación.
Ambiente de Operación Ilustrativo Las modalidades ilustrativas de la presente invención de aquí en adelante serán descritas con referencia a los dibujos, en donde números similares representan elementos similares a través de las varias figuras. La Figura 1 ilustra un ambiente operativo ilustrativo para implementar la presente invención. El ambiente operativo ilustrativo incluye un dispositivo de cómputo de propósito general en la forma de una computadora personal convencional 20. En general una computadora personal 20 incluye una unidad de procesamiento 21, una memoria de sistema 22, y una barra colectora de sistema 23 que acopla varios componentes de sistema incluyendo la memoria de sistema 22 a la unidad de procesamiento 21. La barra colectora de sistema 23 puede ser cualquiera de los varios tipos de estructuras de barra colectora incluyendo una barra colectora de memoria o controlador de memoria, una barra colectora periférica, y una barra colectora local utilizando cualquiera de una variedad de arquitecturas de barra colectora. La memoria de sistema incluye una memoria de solo lectura (ROM) 24, y memoria de acceso aleatoria (RAM) 25. Un sistema básico de entrada/salida (BIOS) 26, conteniendo las rutinas básicas que ayudan a la transferencia de información entre elementos dentro de la computadora personal 20, tal como durante el encendido, está almacenado en la ROM 24. La computadora personal 20 además incluye una unidad de disco duro 27 para leer de y escribir a un disco duro, no mostrado, una unidad de disco magnético 28 para leer de o escribir a un disco magnético removible 29, y una unidad de disco óptico 30 para leer de o escribir a un disco óptico removible 31 tal como un CD-ROM u otros medios ópticos. La unidad de disco duro 27, la unidad de disco magnético 28 y la unidad de disco óptico 30 están conectadas a la barra colectora 23 del sistema a través de una interfase 32 de la unidad de disco duro, una interfase 33 de la unidad de disco magnético, y una interfase 34 de la unidad de disco óptico, respectivamente. Aunque el ambiente ilustrativo aquí descrito emplea el disco duro 27, el disco magnético removible 29 y el disco óptico removible 31, se debe apreciar por aquellos expertos en la técnica que otros tipos de medios legibles por computadora, los cuales pueden almacenar datos que son accesibles por una computadora, tales como casetes o cartuchos magnéticos, tarjetas de memoria flash, discos de vídeo digital, cartuchos de Bernoulli, RAMs, RO s, y similares, también se pueden utilizar en el ambiente operativo ilustrativo. Las unidades y sus medios legibles por computadora asociados proporcionan el almacenamiento no volátil de instrucciones ejecutables por computadora, estructuras de datos, módulos de programa y otros datos para la computadora personal 20. Por ejemplo, uno o más archivos de datos 60 (no mostrado) pueden ser aimacenados en la RAM 25 y/o la unidad de disco duro 27 de la computadora personal 20. Un número de módulos de programa puede ser almacenado en el disco duro 27, disco magnético 29, disco óptico 31, ROM 24, o RAM 25, incluyendo un sistema operativo 35, un módulo de programa de aplicación 36, otros módulos de programa 37 y datos de programa 38. Los módulos de programa incluyen, pero no se limitan a, rutinas, subrutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. Se pueden implementar aspectos de la presente invención como una parte integral de un módulo de programa de aplicación 36 o como una parte de otro módulo de programa 37. Un usuario puede introducir comandos e información a la computadora personal 20 a través de dispositivos de entrada, tales como un teclado 40 y un dispositivo de señalamiento 42. Otros dispositivos de entrada (no mostrado) pueden incluir un micrófono, una palanca de mando, una almohadilla de juegos, una antena de satélite, un explorador, o similares. Estos y otros dispositivos de entrada por lo general están conectados a la unidad de procesamiento 22 a través de una interfase de puerto en serie 46 que está acoplada a la barra colectora 23 del sistema, pero puede ser conectada a través de otras interfases, tales como un puerto paralelo, un puerto de juegos, una barra colectora en serie universal (USB), o similares. Un monitor 47 u otro tipo de dispositivo de presentación también puede ser conectado a la barra colectora 23 del sistema a través de una interfase, tal como un adaptador de vídeo 48. Además del monitor, Las computadores personales típicamente incluyen otros dispositivos de salida periféricos (no mostrado), tales como bocinas e impresoras.
La computadora personal 20 puede operar en un ambiente en red utilizando conexiones lógicas a una o más computadoras remotas 49. La computadora remota 49 puede ser otra computadora personal, un servidor, un cliente, un enrutador, una PC de red, un dispositivo de par a par, u otro nodo de red común. Aunque una computadora remota 49 típicamente incluye muchos o todos los elementos descritos anteriormente con relación a la computador personal 20, solamente se ha ilustrado un dispositivo de almacenamiento de memoria 50 en la Figura 1. Las conexiones lógicas ilustradas en la Figura 1 incluyen una red de área local (LAN) 51 y una red de área amplia (WAN) 52. Dichos ambientes en red son lugares comunes en oficinas, redes de computadora entre empresas, intranets, y el Internet. Cuando se utiliza en un ambiente en red de LAN, la computadora personal 20 es conectada a la red de área local 51 a través de una interfase de red o adaptador 53. Cuando se utiliza en un ambiente en red WAN, la computadora personal 20 típicamente incluye un módem 54 u otros medios para establecer comunicaciones a través de WAN 52, tales como el Internet. El módem 54, el cual puede ser interno o externo, está conectado a la barra colectora 23 del sistema a través de la interfase de puerto en serie 46. En un ambiente en red, los módulos de programa presentados con relación a la computadora personal 20, o sus porciones, pueden ser almacenados en el dispositivo de almacenamiento de memoria remota 50. Se apreciará que las conexiones de red mostradas son ilustrativas y que se pueden utilizar otros medios para establecer un enlace de comunicaciones entre las computadoras. Además, aquellos expertos en la técnica apreciarán que la presente invención puede ser ¡mplementada en otras configuraciones de sistema de cómputo, incluyendo dispositivos portátiles, dispositivos de multiprocesador, electrónica de consumidor a base de microprocesador o programable, computadoras personales de red, minicomputadores, macrocomputadoras, y similares. La presente invención también puede ser practicada en ambientes de cómputo distribuidos, en donde se realizan tareas por dispositivos de procesamiento remotos que están enlazados a través de una red de comunicaciones. En un ambiente de cómputo distribuido, los módulos de programa pueden ser ubicados en dispositivos de almacenamiento de memoria tanto locales como remotos.
Implementación de Modalidades Ilustrativas de la Presente Invención Como describe anteriormente, un sistema de cómputo típicamente comprende clases múltiples de componentes de hardware. Además, el sistema de computadora puede comprender múltiples componentes (por ejemplo, dos unidades de disco duro) dentro de cada clase de componentes de hardware. La identificación fuerte de hardware (SHWID) de la presente invención toma en cuenta cada componente (también denominado aquí como "caso") dentro de cada clase de componentes de hardware. La identificación fuerte de hardware (SHWID) de la presente invención también toma en cuenta ei secreto, S, el cual está unido a un sistema de hardware de computadora. Un método ilustrativo para generar una identificación de hardware fuere (SHWID) de la presente invención, se proporciona más adelante. Además también se describe a continuación un método para utilizar la identificación de hardware fuere (SHWID) como una herramienta contra la piratería.
/. Generación de una Identificación de Hardware Fuere (SHWID) para un Sistema de Cómputo La identificación de hardware fuere (SHWID) de un sistema de cómputo dado comprende dos componentes distintos: (1) un componente de hardware, y (2) un componente de secreto parcial. Los métodos ilustrativos para determinar cada uno de estos componentes se describe a continuación. Los pasos de los métodos ilustrativos pueden ser realizados a través de un código de software dentro de un producto de software en una computadora de cliente, similar a la computadora 20 descrita anteriormente con referencia a la Figura 1.
A. Determinación del Componente de Hardware del SHWID La SHWID de la presente invención comprende un producto de clase para cada clase de componentes de hardware. El componente de hardware de SHWID puede ser determinado como se muestra en la Figura 2. Como se muestra en la Figura 2, una determinación ilustrativa del componente de hardware de la SHWID comienza con el paso 201, en donde un número de clases de componente, n, es seleccionado para identificar un sistema de cómputo dado. Como se discutió anteriormente, un sistema de cómputo dado puede incluir una variedad de componentes de hardware y clases de componentes de hardware. Las clases de componente de hardware ilustrativas incluyen, pero no se limitan a, unidades de disco duro, unidades de disco óptico, tarjetas de red, tarjetas de sonido, adaptadores de presentación, memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), y un sistema de BIOS. Deseablemente, n, el número de clases de componente de hardware es un número entero que varía de aproximadamente 2 a aproximadamente 16. En general, es deseable que n sea lo más grande posible con el fin de (i) identificar con más precisión un sistema de cómputo dado, (ii) medir con más exactitud el grado de tolerancia de un sistema de cómputo dado, y (iii) habilitar un nivel más alto de seguridad para el secreto, S. Después de seleccionar el número de clases de componente, n, en el paso 201, cada clase de componentes es identificado en el paso 202. Las clases de componente pueden incluir cualquiera de las clases de componente descritas anteriormente, tales como la clase de unidades de disco duro. Una lista ilustrativa de clases de componentes se proporciona a continuación en el Cuadro 1.
CUADRO 1 Lista Ilustrativa de Clases de Componente de Hardware Como se muestra en el Cuadro 1, en este ejemplo, n igual a 4, y las clases de componente de hardware identificadas son: (1) una clase de CdRom; (2) una clase de unidad de disco duro; (3) una clase de tarjeta de red; y (4) una clase de dispositivo adaptador de presentación. Después de que cada clase de componente es identificada en el paso 202, todos los casos dentro de cada clase de componente de hardware son identificados en el paso 203. Deseablemente, cada caso dentro de una clase de componente particular es representado por la cadena de identificación única asociada con el caso. Por ejemplo, la configuración de hardware puede contener una unidad de CdRom fabricada por NEC Corporation y que tiene una cadena de identificación de "NEC CDRW24 S15". Cualquier método disponible para determinar la cadena de identificación más única de un caso dado, incluyendo consultas de dispositivo y llamadas de función de API del sistema operativo, puede ser utilizado en la presente invención. Un ejemplo de una configuración de hardware de computadora y los casos dentro de cada clase de componente de hardware se muestra a continuación en el Cuadro 2.
CUADRO 2 Casos de Componente Ilustrativos para cada Clase de Componente Como se muestra en el Cuadro 2 anterior, la clase 1, la clase de CdRom, contiene dos casos de componente; la clase II, la clase de unidad de disco duro, contiene 2 casos de componente; la clase 3, la clase de tarjeta de red, contiene un caso; y la clase 4, la clase de dispositivo adaptador de presentación contiene un caso. En el paso 205, se genera un caso primario para cada caso de componente utilizando una función de generación de número primario, /(x). Deseablemente, la función /(x) posee las siguientes características: (a) el resultado de /(x) es un número primario positivo; (b) x puede ser cualquier dato con una longitud de hasta aproximadamente 65,000 caracteres; y (c) (x) > 2\ en donde t es un número entero deseablemente mayor que aproximadamente 32. Deseablemente, t es igual a o mayor que aproximadamente 64. Sin embargo, no hay ninguna limitación sobre el valor de t. (d) el resultado de /(x) es determinante basándose en el valor de x. Se puede utilizar cualquier función de generación de número primario /(x) en la presente invención para generar un número primario para cada caso de componente. Como se discutió anteriormente, la función de generación de número primario /(x) deseablemente posee las características anteriores. Las funciones de generación de número primario adecuadas /(x) incluyen, pero no se limitan a, funciones de generación de número primario /(x) basándose en el algoritmo de Rabin-Miller descrito en Applied Cryptography, 2o. Edición, por Bruce Schneier, págs. 259-260, la descripción de la cual se incorpora aquí por referencia en su totalidad. El Cuadro 3 a continuación proporciona una lista de casos primarios, iPiq, para casos de componente de una configuración de hardware ilustrativa.
CUADRO 3 Casos Primarios Ilustrativos para Casos de Componente Como se utiliza aquí, el caso primario iPiq, se utiliza para designar el caso primario para un caso de componente dado, q, dentro de una clase p dada. Por ejemplo, el caso primario i1j2 se utiliza para identificar el caso primario para el caso de componente en la clase de componente 1 (por ejemplo, p = 1) y más particularmente, el segundo caso de componente dentro de la clase de componente 1 y dentro de la configuración hardware de computadora (por ejemplo, q = 2). En una modalidad de la presente invención, se puede agregar un "valor de sal" al ¡dentificador de caso de componentes antes de generar el caso primario para un caso de componente dado. En esta modalidad, la adición de un valor de sal habilita la producción de SHWIDs diferentes basándose en la misma configuración de hardware de computadora. Los valores de sal derivados del código de aplicación o de la identidad del usuario habilitan o permiten diferentes SHWlDs para diferentes aplicaciones o usuarios que corren en la misma configuración de hardware, los cuales pueden ser benéficos cuando se aseguran datos para consumo por una aplicación particular o solo un usuario. Una vez que se generan los casos primarios para cada caso de componente, una clase de producto, cp, es generado para cada clase de componente en el paso 206. La clase de componente cp se produce multiplicando los casos primarios dentro de una clase dada entre sí. Los productos de ciase ilustrativos c-¡ a c4 se proporcionan en el Cuadro 4 a continuación.
CUADRO 4 Productos de Clase Ilustrativos para cada Clase de Componente Como se muestra en el Cuadro 4, el producto de clase d para el CdRom de clase de componente de hardware es igual al producto de dos casos ¡ ,1 y ¡1,2· Se debe observar que los productos de clase que resultan de un solo caso primario, tales como el producto de clase c3, pueden ser multiplicados por no casos primarios adicionales para incrementar la dificultad de la factorización de un producto de clase dado. Es particularmente útil para productos de clase compuestos de un solo caso primario, tal como el producto de clase c3 o producto de clase c4, mostrado en el Cuadro 4 anterior. Cuando se utilizan no casos primarios adicionales para incrementar el valor de producto de clase, es deseable que los números de no casos primarios adicionales estén en la escala de más de 2, pero menor que 2\ en donde t es un número entero arbitrario como se discutió anteriormente. Esto mitiga el riesgo de colisión no pretendida con casos primarios a partir de una configuración de hardware diferente.
En el paso 207, cada producto de clase cp, es almacenado para introducirse en la identificación de clase fuerte, Cp, para cada clase de componente como se describe más adelante. Además, como se describe más adelante, la combinación de cada identificación de clase fuerte, Cp, para cada clase se utiliza para producir la identificación de hardware fuerte (SHWID) para un sistema de hardware de cómputo dado. Los productos de clase cp representan el componente de hardware de la identificación de hardware fuerte (SHWID) para un sistema de hardware de cómputo dado.
B. Determinación del Componente Secreto Parcial de la SHWID La identificación del hardware fuerte (SHWID) de la presente invención también comprende un componente secreto parcial para cada clase de componentes de hardware. Un método ilustrativo para determinar el componente secreto parcial de la SHWID se muestra en las Figuras 3-4. Los pasos del método ilustrativo pueden ser realizados a través de un código de software dentro de un producto de software en una computadora del cliente, similar a la computadora 20 descrita anteriormente con referencia a la Figura 1. En el paso 301 mostrado en la Figura 3, un número aleatorio, rp, es generado para cada clase de componente utilizando un generador de número aleatorio. Cualquier generador de número aleatorio convencional puede ser utilizado para generar un número aleatorio rp. Los generadores de número aleatorio adecuados incluyen, pero no se limitan a, generadores de número aleatorio descritos en Prime Numbers by Crandeil y Pomerance, Capítulo 8, la descripción de la cual se incorpora aquí por referencia en su totalidad. Deseablemente, el número aleatorio rp varía de igual a o mayor que 0, hasta, pero menor que 2U, en donde u es menor que t descrita anteriormente. Típicamente, u es aproximadamente igual a t dividida entre 3. Al utilizar el número aleatorio rp para cada clase de componente de hardware generada en el paso 301, se generan clases primarias pp en el paso 302 utilizando una función de generación de número primario, g(rp). Deseablemente, la función de generación de número primario g(rp) tiene las siguientes características: (a) el resultado de g(rp) es un número primario positivo; (b) g(rp) es <2V, en donde v es un número entero mayor que u; y (c) u + V = t. (d) el resultado de g(rp) es determinante basándose en el valor de rp. Como con la función de generación de número primario /(x) descrita anteriormente, se puede utilizar cualquier función de generación, de número primario g(x) en la presente invención para generar un número primario de cada número aleatorio de clase de componente rp. Como se discutió anteriormente, la función de generación de número primario g(x) deseablemente posee las características anteriores. Las funciones de generación de número primario adecuadas g(x) incluyen, pero no se limitan a, funciones de generación de número primario g(x) descritas en Applied Cryptography, 2o. Edición por Bruce Schneier, págs. 259-260, la descripción de la cual se incorpora aquí por referencia en su totalidad . Un ejemplo de la relación entre g(rp), t, u y v se proporciona a continuación. t = 64 u = 20 v = 44 0<rp<2u (220 = 1 ,048,576) 2< g(rp)<2v Una lista Ilustrativa de clases primarias pp para cada una de las n clases (por ejemplo, n = 4) de un sistema de cómputo ilustrativo se muestra en el Cuadro 5 a continuación.
CUADRO 5 Clases Primarias ilustrativas para cada Clase de Componente Una salida de muestra presentando la relación entre las clases primarias para una configuración de hardware dada puede ser dada como: En el paso 303, el número de correspondencias de clases de componente requeridas, m, se selecciona dependiendo del grado de tolerancia deseado para cambios de componente de configuración hardware. El número de correspondencias de clase de componente requeridas, m, puede ser mayor que n, el número total de clases de componente, o puede ser tan pequeño como uno. A medida que el valor de m se incrementa, El grado de tolerancia a los cambios de configuración de hardware de computadora se reduce. Por ejemplo, si el número total de clase de componente n es igual a 4 y m es igual a 3, 3 de cuatro clases de componente en total deben corresponder por lo menos a un caso de componente con el fin de que el secreto S sea recuperado, lo cuai permite la carga o el corrido de un producto de software. Si el número de correspondencias de clase de componente es menor que 3, el secreto S no será recuperado, y el producto de software no correrá o será cargado en la configuración de hardware de computadora. El número de correspondencia de ciase de componente requeridas, m, puede ser predeterminado por un fabricante del software y codificado en el método de generación de SHWID de la presente invención. Una vez que se selecciona m, se determinan parámetros adicionales como se muestra en los pasos 304 y 305. En el paso 304, el parámetro N es determinado, en donde N es igual al producto de las clases primarias más pequeñas m, pp. Por ejemplo, en la salida de clases primarias de muestra descrita anteriormente, la dos clases primarias más pequeñas son p2 y P3- Si m es igual a 2, N es igual a (p2) x (Ps)- En el paso 305, el paso 305, el parámetro M es determinado, en donde M es igual al producto de las clases primarias más grandes (m-1) pp. Por ejemplo, en la salida de clases primarias de muestra dada anteriormente, p4 es la clase primaria más grande. Si m igual 2, entonces M es igual al producto de la clase primaria más grande individual, p4 (es decir, M-1) = 1). Se debe observar que M debe ser menor que N para asegurar que un grupo dado de clases primarias tiene un umbral m. Esta es una implementación de un secreto a base de umbral que comparte el esquema como se describe en The Mathematics of Ciprés by S. C. Coutinho, Capítulo 7, la descripción de la cual se incorpora aquí por referencia en su totalidad. Una vez que se han determinado los parámetros N y M, el secreto S es seleccionado en el paso 306. El secreto S es mayor que M pero menor que N. Además, el secreto S es cualquier número aleatorio entre y N. En el paso 307, las clases restantes dp son calculadas utilizando la siguiente ecuación: dp = S mod pp Un grupo ilustrativo de clases restantes dp se muestra a continuación en el Cuadro 6.
CUADRO 6 Clases Restantes Ilustrativas para cada Clase de Componente En el paso 308, como se muestra en la Figura 4, las clases primarias pp para cada clase de componente son codificadas a primeros valores binarios para cada clase de componente. Cada uno de ios primeros valores binarios tiene u bits. Se debe observar que cada clase primaria pp puede ser representada por u bits debido a las siguientes relaciones: PP = g(rp). en donde 0 < rp < 2" Pp puede ser representado por rp, si g(rp) está disponible en el momento de la recuperación, rp puede ser representado en u bits. pp puede ser representado por rp si g(rp) está disponible en el momento de la recuperación si la función de generación de número primario g() es conocida por la siguiente razón. Cuando pp es igual al g(rp) y la función de generación de número primario g() es conocida, entonces es suficiente conocer rp para generar pp ejecutando g() con el parámetro rp. La codificación de rp requiere u bits (o 20 bits en el ejemplo anterior), mientras que pp requiere v bits (o 44 bits en el ejemplo anterior). Un ahorro en el número requerido de bits es realizado representando pp como rp. En el paso 309, cada una de las clases restantes dp son codificadas a valores binarios secundarios para cada clase de componente. Los valores binarios secundarios pueden ser representados por v bits. Se debe observar que las clases restantes dp pueden ser representadas por v bits como un resultado de las siguientes relaciones: 0 < pp < 2V por lo tanto, dp < 2V En el paso 310, el primer valor binario generado en el paso 308 es concatenado con el segundo valor binario del paso 309 para formar un secreto parcial de clase de componente codificado, Pp, teniendo un total de p bits (es decir, t = u x v). Un secreto parcial de clase de componente Pp es generado para cada clase de componente. Se debe observar que el secreto parcial de clase Pp para una clase de componente dada puede contener bits no utilizados, z, debido al segundo valor binario que tiene menos que v bits. En este caso, los bits no utilizados, z, pueden ser poblados con ruido aleatorio para evitar un atacante, quien conoce las cualidades de g(rp), para evaluar el secreto parcial de clase codificado Pp en un intento de determinar un secreto parcial de clase, Pp. Por ejemplo, cuando pp está en la escala de 2-2v, dp siempre es < pp. Si pp es significativamente menor que 2\ entonces dp requerirá significativamente menos de v bits para la codificación. Un atacante puede adivinar con respecto al tamaño de pp basándose en los valores de dp. Al agregar ruido aleatorio para llenar los bits no utilizados [v - (tamaño de (dp))] de dp ayuda a ocultar el tamaño de C. La SHWID para un Sistema Cómputo La identificación de hardware fuerte (SHWID, según sus siglas en inglés) ahora puede ser configurada utilizando los productos de clase, cp, obtenidos en el paso 207 y el secreto parcial de clase, Pp, obtenido en el paso 310. Como se muestra en el paso 401 en la Figura 5, se crean identificaciones fuertes de clase (lDs), Cp, para cada clase de componente, en donde Cp = cp + Pp. En el paso 402, todas las IDs fuertes de clase, Cp, para las clases de componentes son combinadas para formar la identificación de hardware fuerte SHWID). La SHWID resultante es almacenada para recuperación futura. La SHWID puede ser almacenada localmente (por ejemplo, en el registro, sistema de archivo, o almacenamiento seguro) o en un sitio remoto accesible (por ejemplo, una base de datos). Se debe observar que se puede obtener una seguridad incrementada aumentando el valor de t con el fin de producir un secreto parcial de clase teniendo un número mayor de bits.
//. Recuperación de un Secreto de un Sistema de Cómputo Utilizando la Identificación de Hardware Fuerte (SHWID). La presente invención además está dirigida a un método para recuperar o intentar recuperar un secreto unido S de una configuración de hardware de computadora dada. En una modalidad de la presente invención, el método para intentar recuperar el secreto unido S de una configuración de hardware de computadora dada es iniciado (i) durante la instalación de un producto de software, (ii) durante la carga de una aplicación de software ya existente en un componente de la configuración de hardware, o (iii) en ambos. Un método ilustrativo para recuperar el secreto unido S de una configuración de hardware se describe en las Figuras 6-7. Los pasos del método ilustrativo pueden ser realizados a través de un código de software dentro de un programa de software en una computadora de cliente, similar a la computadora 20 descrita anteriormente con referencia a la Figura 1. En el paso 501 como se muestra en la Figura 6, las IDs de clase fuerte, Cp, de la identificación de hardware fuerte (SHWID) son identificadas para una configuración de hardware de computadora dada. Con el propósito de ilustrar la presente invención, el método de recuperar el secreto unido S de tres configuraciones de software separadas, H, H-¡ y H2, se describirá utilizando una identificación de hardware fuerte (SHWID) previamente almacenada, determinada a partir de la configuración de hardware H. Las tres distintas configuraciones del hardware comprende, (i) la exacta configuración de hardware H a la cual fue emitida la SHWID; (ii) una configuración de hardware F^ la cual comprende la configuración de hardware H teniendo uno o más cambios de componente dentro de un nivel de tolerancia aceptable; y (¡ii) configuración de hardware H2 la cual representa la configuración de hardware H teniendo suficientes cambios de componente de manera que la configuración de hardware H2 está fuera de la tolerancia comparada con la configuración de hardware H. Un grupo ilustrativo de IDs de clase fuerte para las configuraciones de hardware H, Hi y H2 se proporciona a continuación en el Cuadro 7.
CUADRO 7 lDs de Clase Fuerte Ilustrativas para una Configuración de Hardware En el paso 502, se identifican todos los casos dentro de cada clase de componente de una configuración de hardware dada. Como se describió anteriormente, se puede utilizar cualquier método convencional para identificar cada caso de componente. Típicamente, un caso de componente es identificado por la cadena de identificación más única para el componente. Las cadenas de identificación ilustrativas para cada caso de componente dentro de las configuraciones de muestra H, H-¡ y H2 se muestran a continuación en los Cuadros 8-10.
CUADRO 8 Casos de Componente ilustrativos para la Configuración de Hardware H CUADRO 9 Casos de Componente Ilustrativos para la Configuración de Hardware H Configuración H-i o. de Clase de Descripción de Casos de Componente Componente Clase 1 CdRom {"NEC CDRW24 S15", "SONY DVD 1221"} 2 Unidad de Disco Duro {8146a2 5933} 3 Tarjeta de Red {00c0c21b5933} 4 Dispositivo Adaptador de {"NVidiaGeforce2 DDR"} Presentación CUADRO 10 Casos de Componente Ilustrativos para la Configuración de Hardware H? Una vez que todos los casos dentro de cada clase de componente de una configuración de hardware dada son identificados, la cadena de identificación más única para cada caso es recuperada como se muestra en el paso 503. Las cadenas de identificación para caso se utilizan para generar casos primarios para cada caso de componente utilizando una función de generación de número primario /(identificador de caso de componente), como se muestra en el paso 504. La función de generación de número primario /(identificador de caso de componentes) puede ser cualquier función de generación de número primario conocida por aquellos expertos en la técnica como se describió anteriormente. Los Cuadros 11-13 a continuación proporcionan casos primarios ilustrativos para cada uno de los casos de componente dentro de las configuraciones de hardware de muestra H, H-, y H2.
CUADRO 11 Casos Primarios Ilustrativos, in M, para la Configuración de Hardware de Muestra H Configuración H . de Clase de Descripción de Casos Primarios Componente Clase 1 CdRom {/("NEC CDRW24 S15") = i,,!, / ("TOSHIBA DVDR ASB-1425") = Í1.2> 2 Unidad de Disco Duro {/(1bcdff19) = i2,i , /(7da90024) = ¡2, 2} 3 Tarjeta de Red {/(00b0c31b5923) = i3,i} 4 Dispositivo Adaptador {/(NvidiaGeforce2 DDR") = i4i1} de Presentación CUADRO 12 Casos Primarios Ilustrativos, in n, para la Configuración de Hardware de Muestra H1 Configuración H-i . de Clase de Descripción de Casos Primarios Componente Clase 1 CdRom {/(" EC CDRW24 S15") = ¡1.1. / ("SONY DVD 1221") = ¡1 ,3} 2 Unidad de Disco Duro {/(8146af92) = i2,3, 3 Tarjeta de Red {/(00c0c21b5933) = Í3,i} 4 Dispositivo Adaptador de {/("NvidiaGeforce2 Presentación DDR") = i4i1} CUADRO 13 Casos Primarios Ilustrativos, ¡n n, para la Configuración de Hardware de Muestra H? Se debe observar que el caso de componente {/("SONY DVD 1221") es designado i j3, dado que este tipo de CdROM es el tercer tipo de CdRom considerado en las configuraciones de hardware anteriores (es decir, H, y H2). En el paso 505, todos los secretos parciales de clase posibles Pp,q son determinados, en donde Pp,q igual a Cp mod ip,q. Como se describió anteriormente, la ID de clase fuerte, Cp, para cada clase de componente resulta de la suma del producto de clase Cp más el secreto parcial de clase Pp para cada clase. Si la ID de clase fuerte, Cp, se divide entre un caso primario ip,q que estaba presente en la configuración del hardware original H en donde se basó la ID de hardware fuerte (SHWID), la operación siguiente restante (mod) proporciona un posible secreto parcial de clase Pp,q- Los secretos parciales de clase posibles ilustrativos Pp,q para las configuraciones de hardware de muestra H, H-i y H2 se proporcionan a continuación en los Cuadros 14-16.
CUADRO 14 Posibles Secretos Parciales de Clase Ilustrativos Pn.n, para cada Caso de Componente en la Configuración de Hardware de Muestra H Configuración H No. de Clase de Descripción de Posibles Secretos Parciales Componente Clase de Clase 1 CdRom P1 f 1 = mod P z - ci mod ii1 t2 2 Unidad de Disco Duro P2j = C2 mod ¡2,1. P2,2 = 2 3 Tarjeta de Red P3,i = C3 mod ¡3,1 4 Dispositivo Adaptador P4i1 = C4 mod ¡4,! de Presentación CUADRO 15 Posibles Secretos Parciales de Clase Ilustrativos Pn.„, para cada Caso de Componente en la Configuración de Hardware de Muestra Configuración H1 o. de Clase de Descripción de Posibles Secretos Parciales Componente Clase de Clase 1 CdRom Pi .1 = C-i mod ¡1 1 , P1.3 2 Unidad de Disco Duro P2 3 = c2 mod i2,3 3 Tarjeta de Red P3,2 - C3 mod Í3 2 4 Dispositivo Adaptador de P4,i = C4 mod ¡4,1 Presentación CUADRO 16 Posibles Secretos Parciales de Clase Ilustrativos Pn n, para cada Caso de Componente en la Configuración de Hardware de Muestra H¿ A partir de cada uno de los posibles secretos parciales de clase Pp,q, se pueden extraer números aleatorios rp y clases restantes dp como se muestra en el paso 506. Como se discutió anteriormente, las clases primarias pp,q pueden ser recuperadas utilizando la función g(rp), en donde rp son los primeros u bits del posible secreto parcial de clase Pp,q. Las clases restantes dp,q pueden ser recuperadas de los últimos v bits del secreto parcial de clase Pp,q. Una lista ilustrativa de todas las posibles clases primarias pp,q y clases restantes de dp,q para configuraciones de hardware de muestra H, H( y H se proporcionan a continuación en los Cuadros 17-19.
CUADRO 17 Clases Primarias Ilustrativas Pn „ y Clases Restantes d„ „ para cada Posible Secreto Parcial de Clase Pn n de la Configuración de Hardware de Muestra H CUADRO 18 Clases Primarias Ilustrativas Pn ? y Clases Restantes dn n para cada Posible Secreto Parcial de Clase Pn n de la Configuración de Hardware de Muestra H CUADRO 19 Clases Primarias Ilustrativas Pn n y Clases Restantes dn n para cada Posible Secreto Parcial de Clase Pn.„ de la Configuración de Hardware de Muestra H? Configuración H2 No. de Clase de Descripción de Posibles Clases Primarias Componente Clase pp,q y Clases Restantes dp,q 1 CdRom Pi,3 = > Pi,3> d1 3 2 Unidad de Disco Duro P2,3 = > P2.3, ^2,3 3 Tarjeta de Red P3,2=> P3,2> d3 2 4 Dispositivo Adaptador de P4.1 => P .1, d4i Presentación Una vez que todas las posibles clases primarias y clases restantes son determinadas en el paso 506, estas representan un número de grupos de congruencia. S es un número grande, el cual cuando se divide entre posibles clases primarias pp>q produce clases restantes dp,q para un grupo de congruencia dado. Ya que S es cuidadosamente seleccionado (es decir, S está entre M y N) y todos los divisores son primarios, la solución al grupo de congruencias utilizando las posibles clases primarias y clases restantes que caen entre M y N debe ser S. La cuidadosa selección de S en el paso 306 asegura que solamente los elementos correspondientes N del grupo de congruencias son requeridos para producir el valor correcto para S. Esto es un secreto a base de umbral clásico que comparte el esquema como se describe en The mathematics of Ciprés por S. C. Coutinho, Capítulo 7, la descripción de la cual se incorpora aquí por referencia. Es imposible determinar que, si hay alguna, de las posibles clases primarias y restantes corresponden a la configuración de hardware deseada por adelantado, de manera que es necesario generar posibles secretos para cada permutación de posibles clases primarias y clases restantes resolviendo el grupo discreto de congruencias presentadas por cada permutación en el paso 507. Como se muestra en el paso 508, los posibles secretos resultantes pueden ser probados utilizando un texto cifrado creados para propósitos de verificación. Dicho procedimiento se describe a continuación.
En la presente invención, se codifica un texto completo conocido utilizando el secreto S como una clave para formar el texto cifrado. Típicamente, un mensaje encriptado (es decir, texto cifrado) es acompañado por una moneda de verificación que permite que un descifrador sepa que el mensaje ha sido descodificado crípticamente con éxito. Esto usualmente es ya sea una verificación del texto completo del mensaje o algún texto completo seleccionado. En la presente invención, el texto completo seleccionado deseablemente se utiliza por simpleza. De manera que cuando se genera la SHWID,' el texto completo seleccionado (por ejemplo, "este es el texto completo seleccionado") es encriptado utilizando S (es decir, como la clave) para producir el texto cifrado. El descodificador conoce tanto el texto completo seleccionado como el texto cifrado. En la situación anterior, la validez de un candidato para S (es decir, cada uno de los posibles secretos resultantes) puede ser verificada descifrando el texto cifrado utilizando el candidato para S (es decir, cada uno de ios posibles secretos resultantes) como la clave. Si el texto completo resultante corresponde ai texto completo seleccionado, entonces el candidato para S (es decir, uno de los posibles secretos resultantes) es, en realidad, S. Si el texto completo resultante no corresponde al texto completo seleccionado, entonces el candidato para S (es decir, uno de los posibles secretos resultantes) no es S. Como se muestra en la Figura 7, si el texto completo conocido es revelado descodificando el texto cifrado utilizando el secreto posible, entonces el secreto S ha sido encontrado y el método prosigue al paso 510, en donde el programa permite que un producto de software dado sea cargado o instalado en una configuración de hardware de computadora dada. De otra manera, el método prosigue al paso 509. Si existen más permutaciones que no han sido probadas, el método regresa al paso 507. De otra manera, la SHWID no corresponde y el método prosigue al paso 511, el cual evita la carga o instalación del producto de software. Resultados ilustrativos para las configuraciones de muestra H, H-i y H2 se muestran a continuación en los Cuadros 20-22.
CUADRO 20 Resultados Ilustrativos que Muestran el Número de Correspondencias entre el Posible Secreto Parcial y el Secreto Actual S para la Configuración de Hardware de Muestra H Configuración H o. de Clase de Descripción de Posibles Correspondencias Componente Clase entre un Posible Secreto Sp,q y Secreto Actual S 1 CdRom S = du (mod ?,, OR S = d1i2 (mod p1i2) 2 Unidad de Disco Duro S = d2 ? (mod P2,i) OR S = d2,2 (mod P2,2) 3 Tarjeta de Red S = d3ii (mod p3>n) 4 Dispositivo Adaptador S = d4 1 (mod p4,i) de Presentación Resultado - Solución individual, 4 de 4 correspondencias - S CUADRO 21 Resultados Ilustrativos que Muestran el Numero de Correspondencias entre el Posible Secreto Parcial Sp ? y el Secreto Actual S para la Configuración de Hardware de Muestra H, Configuración No. de Clase de Descripción de Posibles Correspondencias Componente Clase entre un Posible Secreto Sp,q y Secreto Actual S 1 CdRom S = d,,i (mod u) OR S = d1 i3 (mod p1 i3) 2 Unidad de Disco Duro S = d2,3 (mod p2,3) 3 Tarjeta de Red S = d3i2 (mod p3,2) 4 Dispositivo Adaptador de S = d4i1 (mod P4,i ) Presentación Resultado - Dos posibles soluciones dependiendo del uso de d1t 1 (2 de 4 correspondencias , encuentran S) o d1i3 (1 de 4 correspondencias, encuentran Z-,) CUADRO 22 Resultados Ilustrativos que Muestran el Número de Correspondencias entre el Posible Secreto Parcial Sn n y el Secreto Actual S para la Configuración de Hardware de Muestra H; Como se muestra en el Cuadro 20 anterior, la configuración de hardware original H da como resultado cuatro de las cuatro correspondencias entre posibles secretos SPiq y el secreto actual S. Como se muestra en el Cuadro 21 anterior, la configuración de hardware H-¡ tiene un máximo de dos correspondencias de cuatro posibles correspondencias dependiendo de que clase restante dp,q se utiliza para determinar el posible secreto S. En esta configuración de hardware de muestra, si m es igual a 2, el programa permite que el secreto S unido sea recuperado, y un producto de software puede ser cargado o instalado en la configuración de hardware Sin embargo, en la configuración de hardware H2 como se muestra en el Cuadro 22 anterior, solamente 1 de 4 posibles correspondencias ocurre. Si m es igual a 2, se producen falsos no secretos Z,, y el método evita que un producto de software particular sea cargado o instalado en la configuración de hardware H2. Los pasos del método descritos anteriormente ilustrados en las Figuras 2, 3-4, 5 y 6-7 se pueden realizar localmente o en una ubicación remota. Típicamente, un cliente compra un producto de software que puede correr en una computadora dada, tal como la computadora 20 mostrada en la Figura 1. El producto de software puede ser un producto de envoltura encogible que tiene un programa de software almacenado en un medio legible por computadora transportable, tal como un CD-ROM o disco flexible. Alternativamente, el producto de software puede ser suministrado electrónicamente a través de una red, tal como una red de área local (LAN) 51 o una red de área amplia (WAN) 52. El cliente carga el producto de software en la computadora 20 como un programa almacenado en la memoria de sistema 22. Durante la instalación de un producto de software, el cliente típicamente es incitado a introducir una porción de la identificación del producto de software (PID) para que el producto de software entre a la computadora 20. La PID puede ser, por ejemplo, una clave CD impresa en la etiqueta del paquete de envoltura encogible. Ei cliente introduce la PID, la cual está asociada con un programa de software del producto de software. La PID se almacena localmente en la computadora 20 y/o en forma remota en un sitio accesible, ya sea en una red de área local (LAN) 51 o en una red de área amplia (WAN) 52 con una tercera parte, tal como una autoridad de activación . Como se describió anteriormente, durante la instalación del producto de software, también se genera una identificación de hardware fuerte (SHWID) utilizando el código dentro del producto de software o activado por la instalación del producto de software. La identificación de hardware fuerte (SHWID) generada por el método de la presente invención está asociada con la identificación del producto de software (PID) y almacenada junto con la identificación de producto de software (PID) localmente en la computadora 20 y/o en forma remota en un sitio accesible, ya sea en una red de área local (LAN) 51 o una red de área amplia (WAN) 52, tal como con una autoridad de activación de tercera parte. Como parte del procedimiento de instalación, se puede requerir que el cliente active el producto de software con una autoridad de activación. Esta autoridad puede ser, por ejemplo, el fabricante del producto o una tercera parte autorizada. El procedimiento de activación está destinado a forzar al cliente a activar el producto de software (i) para instalación y usos en una computadora específica, o (ii) para instalación y uso de acuerdo con los términos de un acuerdo de licencia del producto. Dicho procedimiento de activación se describe con detalle en la patente de E. U. A. No. 6,243,468, asignada a Microsoft Corporation (Redmond, WA), los contenidos de la cual se incorporan aquí por referencia en su totalidad.
La identificación de hardware fuerte (SHWID) generada por el método de la presente invención y la identificación del producto de software (PID) pueden ser almacenadas localmente en la computadora 20 y/o en forma remota en un sitio accesible, ya sea en una red de área local (LAN) 51 o una red de área amplia (WAN) 52 con una autoridad de activación. Deseablemente, el producto de software automáticamente presenta una ventana de diálogo o de interfase de usuario gráfica (Ul) cuando primero es cargado, incitando al usuario a iniciar una conexión con el servidor de activación para activarse así mismo. El servidor de activación mantiene una base de datos para almacenar identificaciones de hardware fuertes recibidas (SHWIDs) y sus identificaciones de producto de software asociadas (PIDs). La identificación de hardware fuerte (SHWID) y la identificación de producto de software asociada (PID) para un producto de software dado puede ser almacenada durante un periodo indefinido hasta que el producto de software se vuelva a instalar en otra computadora o se cargue en la primera computadora (es decir, la computadora utilizada durante la instalación inicial). Cuando el mismo producto de software se vuelve a instalar en otra computadora o se carga en la primera computadora, un código en el producto de software inicia un método para determinar si un producto de software puede ser utilizado en un sistema de cómputo de acuerdo con la presente invención. El producto de software recupera la identificación de hardware fuerte (SHWID) previamente almacenada, asociada con la identificación de producto de software (PID) del producto de software ya sea de la computadora local 20 o de una ubicación remota a través de una red de área local (LAN) 51 o una red de área amplia (WAN) 52. Se hace una determinación utilizando la identificación de hardware fuerte (SHWID) previamente almacenada de que si el producto de software puede ser utilizado en una configuración de hardware de computadora como se describió anteriormente. Cuando el uso de un producto de software es denegado debido a cambios importantes en la configuración de hardware de una primera computadora (es decir, la computadora utilizada durante la instalación inicial), se puede proveer una caja de diálogo al cliente indicando que el uso del producto de software está siendo negado, y que se puede obtener información adicional con respecto al uso futuro del producto del software a partir de una fuente dada.
///. Otros Usos de una Identificación de Hardware Fuerte (SHWID) Además de los usos descritos anteriormente, la identificación de hardware fuerte (SHWID) de la presente invención se puede utilizar para codificar/descodificar crípticamente datos para utilizarse solamente en una configuración de hardware específica. Aunque la especificación ha sido descrita con detalle con respecto a sus modalidades específicas, se apreciará que aquellos expertos en la técnica, después de obtener un entendimiento de lo anterior, fácilmente pueden concebir alteraciones, variaciones y equivalentes de estas modalidades. Por consiguiente, el alcance de la presente invención debe ser determinado como aquel de las reivindicaciones anexas y cualesquiera equivalentes de las mismas.

Claims (1)

  1. REIVINDICACIONES 1. - Un método para generar una identificación de hardware fuerte (SHWID) para un primer sistema de cómputo que tiene una primera configuración de hardware, en donde el método comprende: identificar cada clase de componente dentro de la primera configuración de hardware, en donde el número de clases de componente es igual a n; determinar un producto de clase, cp, para cada clase de componente; determinar un secreto parcial, Pp, para cada clase de componente; y agregar el producto de clase, cp, y el secreto parcial, Pp, para cada clase de componente para formar n IDs de clase fuerte, en donde las n IDs de clase fuerte en combinación forman la identificación de hardware fuerte (SHWID) del primer sistema de cómputo. 2. - El método de acuerdo con la reivindicación 1, en donde n es un número entero de hasta aproximadamente 16. 3.- El método de acuerdo con la reivindicación 1, en donde el producto de clase, cp, para cada clase de componente se determina a través de los siguientes pasos: seleccionar el número de clases de componente n; identificar las n clases de componente; identificar todos los casos dentro de cada clase de componente; asignar una cadena de identificación para cada caso de componente; generar casos primarios, pPiq, para cada caso de componente, en donde cada caso primario es un número primario positivo, y en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th del componente dentro de la primera configuración de hardware; y multiplicar los casos primarios dentro de cada clase de componente para formar el producto de clase, cp, para cada clase de componente. 4. - El método de acuerdo con la reivindicación 3, en donde el paso de generar casos primarios comprende introducir la cadena de identificación para cada caso de componente en una función de generación de número primario, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 5. - El método de acuerdo con la reivindicación 4, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2l en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048. 6. - El método de acuerdo con la reivindicación 1, en donde el secreto parcial, Pp, para cada clase de componente se determina a través de los siguientes pasos: generar un número aleatorio, rp, para cada clase de componente; generar clases primarias, pp, para cada clase de componente, en donde cada clase primaria es un número primario positivo; seleccionar un número de correspondencias de clase de componente requeridas, m, en donde m es menor que o igual a n; determinar N, en donde N es igual al producto de las clases primarias más pequeñas m, pp; determinar M, en donde M es igual al producto de las clases primarias más grandes (m-1) pp y es menor que N; seleccionar un número secreto S, en donde M<S<N; determinar las clases restantes, dp, para cada clase de componente, en donde dp es igual a [S(mod pp)]; formar un primer valor binario para cada clase de componente, en donde el primer valor binario es la clase primaria pp para cada clase codificada a un primer número binario que tiene hasta u bits, en donde u es menor que t y tanto u como t son menores que aproximadamente 2,048; formar un segundo valor binario para cada clase de componente, en donde el segundo valor binario es la clase restante dp para cada clase codificada a un segundo número binario que tiene hasta v bits, en donde v es menor que t, y (u + v = t); y concatenar el primer valor binario y el segundo valor binario para formar el secreto parcial, Pp, para cada clase de componente teniendo un número total de bits igual a t. 7.- El método de acuerdo con la reivindicación 6, en donde cada número aleatorio, rp es generado utilizando un generador de número aleatorio, y tiene un valor que varía de 0 a menos de 2U. 8. - El método de acuerdo con la reivindicación 6, en donde el paso de generar clases primarias, pp, para cada clase de componente comprende introducir el número aleatorio para cada clase de componente a una función de generación de número primario g(x), en donde x es el número, aleatorio que tiene una longitud de hasta aproximadamente 65,000 caracteres. 9. - El método de acuerdo con la reivindicación 8, en donde g(x) genera un número primario positivo que tiene un valor que varía de más de 2 a menos de 2V. 10. - El método de acuerdo con la reivindicación 1, en donde el método se inicia durante un paso de carga de un producto de software en el primer sistema de computadora. 11.- Un método para determinar si un producto de software puede ser utilizado en un segundo sistema de computadora que tiene una segunda configuración de hardware, en donde el segundo sistema de computadora es idéntico a o diferente del primer sistema de computadora, en donde el método comprende: identificar las n clases de componentes utilizadas para determinar la identificación de hardware fuerte (SHWID) generada por el método de la reivindicación 1; identificar todos los casos dentro de cada clase de componente de la segunda configuración de hardware; recuperar una cadena de identificación que representa cada caso de componente individual; generar casos primarios, ip q, para cada caso de componente, en donde cada caso primario es un número primario positivo, en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th de componente dentro de la primera configuración de hardware o la segunda configuración de hardware; recuperar los posibles secretos parciales de clase, Pp,q, en donde: Pp,q = [Cp (mod ip,q)]; extraer las posibles clases primarias, Pp,q, y las posibles clases restantes, dPiq) de los posibles secretos parciales de clase, Pp,q; resolver un grupo de concurrencias provistas por una permutación de las posibles clases primarias y las posibles clases restantes para producir un secreto posible; y probar el secreto posible descodificando un texto cifrado dado y probando un resultado de la prueba contra un texto completo conocido correspondiente; en donde: si el texto completo resultante corresponde al texto completo conocido, cargar el producto de software en el segundo sistema de computadora; y si el texto completo resultante no corresponde al texto completo conocido, evitar que el producto de software sea cargado en el segundo sistema de computadora. 12. - El método de acuerdo con la reivindicación 11, en donde el paso de generar casos primarios comprende introducir la cadena de identificación que representa cada caso de componente individual en una función de generación de número primaria, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 13. - El método de acuerdo con la reivindicación 12, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2', en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048. 14. - Un sistema de cómputo que contiene por lo menos un módulo de aplicación que se utiliza en un sistema de cómputo, en donde por lo menos un módulo de aplicación comprende un código de aplicación para realizar el método de la reivindicación 1. 15.- Un medio legible por computadora que tiene almacenadas en el mismo, instrucciones ejecutables por computadora para realizar el método de la reivindicación 1. 16.- Un medio legible por computadora que tiene almacenadas en el mismo, instrucciones ejecutables por computadora para realizar un método para generar una identificación de hardware fuerte (SHWID) para un primer sistema de computadora que tiene una primera configuración de hardware, en donde el método comprende: identificar cada clase de componente dentro de la primera configuración de hardware, en donde el número de clases de componente es igual a n; determinar un producto de clase, cp, para cada clase de componente; determinar un secreto parcial, Pp para cada clase de componente; y agregar el producto de clase, cp, y el secreto parcial, pp, para cada clase de componente para formar n IDs de clase fuerte, en donde las n IDs de clase fuerte en combinación forman la identificación del hardware fuerte (SHWID) del primer sistema de computadora. 17.- El medio legible por computadora de acuerdo con la reivindicación 16, en donde n es un número entero de hasta aproximadamente 16. 18.- El medio legible por computadora de acuerdo con la reivindicación 16, en donde el producto de clase, cp, para cada clase de componente se determina a través de los siguientes pasos:* seleccionar el número de clases de componente n; identificar las n clases de componente; identificar todos los casos dentro de cada clase de componente; asignar una cadena de identificación para cada caso de componente; generar casos primarios, pp,q, para cada caso de componente, en donde cada caso primario es un número primario positivo, y en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th del componente dentro de la primera configuración de hardware; y multiplicar los casos primarios dentro de cada clase de componente para formar el producto de clase, cp, para cada clase de componente. 19.- El medio legible por computadora de acuerdo con la reivindicación 18, en donde el paso de generar casos primarios comprende introducir la cadena de identificación para cada caso de componente a una función de generación de número primario, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 20.- El medio legible por computadora de acuerdo con la reivindicación 19, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2* en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048. 21.- El medio legible por computadora de acuerdo con la reivindicación 16, en donde el secreto parcial, Pp, para cada clase de componente se determina a través de los siguientes pasos: generar un número aleatorio, rp, para cada clase de componente; generar clases primarias, pp, para cada clase de componente, en donde cada clase primaria es un número primario positivo; seleccionar un número de correspondencias de clase de componente requeridas, m, en donde m es menor que o igual a n; determinar N, en donde N es igual al producto de las clases primarias más pequeñas m, pp; determinar M, en donde M es igual al producto de las clases primarias más grandes (m-1) pp y M es menor que N; seleccionar un número secreto S, en donde M<S<N; determinar las clases restantes, dp, para cada clase de componente, en donde dp igual a [S(mod pp)]; formar un primer vaior binario para cada clase de componente, en donde el primer valor binario es la clase primaria pp para cada clase codificada a un primer número binario que tiene hasta u bits, en donde u es menor que t y tanto u como t son menores que aproximadamente 2,048; formar un segundo valor binario para cada clase de componente, en donde el segundo valor binario es la clase restante dp para cada clase codificada a un segundo número binario que tiene hasta v bits, en donde v es menor que t, y (u + v = t); y concatenar el primer valor binario y el segundo valor binario para formar el secreto parcial, Pp, para cada clase de componente teniendo un número total de bits igual a t. 22. - El medio legible por computadora de acuerdo con la reivindicación 21, en donde cada número aleatorio, rp es generado utilizando un generador de número aleatorio, y tiene un valor que varía de 0 a menos de 2U. 23. - El medio legible por computadora de acuerdo con la reivindicación 21, en donde el paso de generar clases primarias, pp, para cada clase de componente comprende introducir el número aleatorio para cada clase de componente a una función de generación de número primario g(x), en donde x es el número aleatorio que tiene una longitud de hasta aproximadamente 65,000 caracteres. 24. - El medio legible por computadora de acuerdo con la reivindicación 23, en donde g(x) genera un número primario positivo que tiene un valor que varía de más de 2 a menos de 2V. 25. - El medio legible por computadora de acuerdo con la reivindicación 16, en donde el método se inicia durante un paso de carga de un producto de software en el primer sistema de computadora. 26. - Un medio legible por computadora que tiene almacenadas en el mismo, instrucciones ejecutables por computadora para realizar un método para determinar si un producto de software puede ser utilizado en un segundo sistema de computadora que tiene una segunda configuración hardware, y en donde el segundo sistema de computadora es idéntico a o diferente del primer sistema de computadora, en donde el método comprende: identificar las n clases de componentes utilizadas para determinar la identificación de hardware fuerte (SHWID) generada por el método de la reivindicación 16; identificar todos los casos dentro de cada clase de componente de la segunda configuración de hardware; recuperar una cadena de identificación que representa cada caso de componente individual; generar casos primarios, ip,q, para cada caso de componente, en donde cada caso primario es un número primario positivo, en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th de componente dentro de la primera configuración de hardware o la segunda configuración de hardware; recuperar los posibles secretos parciales de clase, Pp,q, en donde: Pp.q = [Cp (mod ¡p,q)]; extraer las posibles clases primarias, Pp,q, y las posibles clases restantes, dPiq, de los posibles secretos parciales de clase, Pp,q; resolver un grupo de concurrencias provistas por una permutación de las posibles clases primarias y las posibles clases restantes para producir un secreto posible; y probar el secreto posible descodificando un texto cifrado dado y probando un resultado de la prueba contra un texto completo conocido correspondiente; en donde: si el texto completo resultante corresponde al texto completo conocido, cargar el producto de software en el segundo sistema de computadora; y si el texto completo resultante no corresponde al texto completo conocido, evitar que el producto de software sea cargado en el segundo sistema de computadora. 27.- El medio legible por computadora de acuerdo con la reivindicación 26, en donde el paso de generar casos primarios comprende introducir la cadena de identificación que representa cada caso de componente individual en una función de generación de número primaria, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 28.- El medio legible por computadora de acuerdo con la reivindicación 27, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2\ en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048. 29.- Un sistema de cómputo que contiene por lo menos un modulo de aplicación que se puede utilizar en un sistema de cómputo, en donde por lo menos un módulo de aplicación comprende un código de aplicación para realizar un método para generar una identificación de hardware fuerte (SHWID) para un primer sistema de cómputo que tiene una primera configuración de hardware, en donde el método comprende: identificar cada clase de componente dentro de la primera configuración de hardware, en donde el número de clases de componente es igual a n; determinar un producto de clase, cp, para cada clase de componente; determinar un secreto parcial, Pp para cada clase de componente; y agregar el producto de clase, cp, y el secreto parcial, pp, para cada clase de componente para formar n IDs de clase fuerte, en donde las n IDs de clase fuerte en combinación forman la identificación del hardware fuerte (SHWID) del primer sistema de computadora. 30.- El sistema de cómputo de acuerdo con la reivindicación 29, en donde n es un número entero de hasta aproximadamente 16. 31.- El sistema de cómputo de acuerdo con la reivindicación 29, en donde el producto de clase, cp, para cada clase de componente se determina a través de los siguientes pasos: seleccionar el número de clases de componente n; identificar las n clases de componente; identificar todos los casos dentro de cada clase de componente; asignar una cadena de identificación para cada caso de componente; generar casos primarios, pp,q, para cada caso de componente, , en donde cada caso primario es un número primario positivo, y en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th del componente dentro de la primera configuración de hardware; y multiplicar los casos primarios dentro de cada clase de componente para formar el producto de clase, cp, para cada clase de componente. 32.- El sistema de cómputo de acuerdo con la reivindicación 31, en donde el paso de generar casos primarios comprende introducir la cadena de identificación para cada caso de componente a una función de generación de número primario, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 33. - El sistema de cómputo con la reivindicación 32, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2f en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048. 34. - El sistema de cómputo de acuerdo con la reivindicación 29, en donde el secreto parcial, Pp, para cada clase de componente se determina a través de los siguientes pasos: generar un número aleatorio, rp, para cada clase de componente; generar clases primarias, pp, para cada clase de componente, en donde cada clase primaria es un número primario positivo; seleccionar un número de correspondencias de clase de componente requeridas, m, en donde m es menor que o igual a n; determinar N, en donde N es igual al producto de las clases primarias más pequeñas m, pp; determinar M, en donde M es igual al producto de las clases primarias más grandes (m-1) pp y M es menor que N; seleccionar un número secreto S, en donde M<S<N; determinar las clases restantes, dp, para cada clase de componente, en donde dp igual a [S(mod pp)]; formar un primer valor binario para cada clase de componente, en donde el primer valor binario es la clase primaria pp para cada clase codificada a un primer número binario que tiene hasta u bits, en donde u es menor que í y tanto u como t son menores que aproximadamente 2,048; formar un segundo valor binario para cada clase de componente, en donde el segundo valor binario es la clase restante dp para cada clase codificada a un segundo número binario que tiene hasta v bits, en donde v es menor que t, y (u + v = t); y concatenar el primer valor binario y el segundo valor binario para formar el secreto parcial, Pp, para cada clase de componente teniendo un número total de bits igual a t. 35.- El sistema de cómputo de acuerdo con la reivindicación 34, en donde cada número aleatorio, rp es generado utilizando un generador de número aleatorio, y tiene un valor que varía de 0 a menos de 2U. 36.- El sistema de cómputo de acuerdo con la reivindicación 34, en donde el paso de generar clases primarias, pp, para cada clase de componente comprende introducir el número aleatorio para cada clase de componente a una función de generación de número primario g(x), en donde x es el número aleatorio que tiene una longitud de hasta aproximadamente 65,000 caracteres. 37.- El sistema de cómputo de acuerdo con la reivindicación 36, en donde g(x) genera un número primario positivo que tiene un valor que varía de más de 2 a menos de 2V. 38.- El sistema de cómputo de acuerdo con la reivindicación 29, en donde el método se inicia durante un paso de carga de un producto de software en el primer sistema de computadora. 39.- Un sistema de cómputo que contiene por lo menos un módulo de aplicación que se puede utilizar en un sistema de cómputo, en donde por lo menos un módulo de aplicación comprende un código de aplicación para realizar un método para determinar si un producto de software puede ser utilizado en un segundo sistema de cómputo que tiene una segunda configuración hardware, y en donde el segundo sistema de cómputo es idéntico a o diferente del primer sistema de cómputo, en donde el método comprende: identificar las n clases de componentes utilizadas para determinar la identificación de hardware fuerte (SHWID) generada por el método de la reivindicación 29; identificar todos los casos dentro de cada clase de componente de la segunda configuración de hardware; recuperar una cadena de identificación que representa cada caso de componente individual; generar casos primarios, ip,q, para cada caso de componente, en donde cada caso primario es un número primario positivo, en donde p representa un número de clase de componente dado que varía de 1 a n, y q representa el tipo q-th de componente dentro de la primera configuración de hardware o la segunda configuración de hardware; recuperar los posibles secretos parciales de clase, Pp,q, en donde: extraer las posibles clases primarias, Pp,q, y las posibles clases restantes, dp,q, de los posibles secretos parciales de clase, Pp,q; resolver un grupo de concurrencias provistas por una permutación de las posibles clases primarias y las posibles clases restantes para producir un secreto posible; y probar el secreto posible descodificando un texto cifrado dado y probando un resultado de la prueba contra un texto completo conocido correspondiente; en donde: si el texto completo resultante corresponde al texto completo conocido, cargar el producto de software en el segundo sistema de computadora; y si el texto completo resultante no corresponde al texto completo conocido, evitar que el producto de software sea cargado en el segundo sistema de computadora. 40.- El sistema de cómputo de acuerdo con la reivindicación 39, en donde el paso de generar casos primarios comprende introducir la cadena de identificación que representa cada caso de componente individual en una función de generación de número primaria, /(x), en donde x es la cadena de identificación que tiene una longitud de hasta aproximadamente 65,000 caracteres. 41.- El sistema de cómputo de acuerdo con la reivindicación 40, en donde /(x) genera un número primario positivo que tiene un valor mayor que 2\ en donde t es un número entero que varía de aproximadamente 32 a aproximadamente 2,048.
MXPA04002024A 2003-03-03 2004-03-02 Sistema para unir secretos a un sistema de computadora que tiene tolerancia para cambios de hardware. MXPA04002024A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/378,224 US7296294B2 (en) 2003-03-03 2003-03-03 System for binding secrets to a computer system having tolerance for hardware changes

Publications (1)

Publication Number Publication Date
MXPA04002024A true MXPA04002024A (es) 2005-02-17

Family

ID=32824752

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04002024A MXPA04002024A (es) 2003-03-03 2004-03-02 Sistema para unir secretos a un sistema de computadora que tiene tolerancia para cambios de hardware.

Country Status (19)

Country Link
US (2) US7296294B2 (es)
EP (1) EP1455257B1 (es)
JP (1) JP4599069B2 (es)
KR (1) KR101036701B1 (es)
CN (1) CN100416445C (es)
AT (1) ATE306101T1 (es)
AU (1) AU2004200683B2 (es)
BR (1) BRPI0400380A (es)
CA (1) CA2459217A1 (es)
DE (1) DE602004000106T8 (es)
DK (1) DK1455257T3 (es)
ES (1) ES2250932T3 (es)
HK (1) HK1068697A1 (es)
MX (1) MXPA04002024A (es)
MY (1) MY134635A (es)
PL (1) PL1455257T3 (es)
RU (1) RU2348968C2 (es)
TW (1) TWI319544B (es)
ZA (1) ZA200401493B (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027657A1 (en) * 2003-08-01 2005-02-03 Yuri Leontiev Distinguishing legitimate hardware upgrades from unauthorized installations of software on additional computers
JP4699099B2 (ja) * 2005-06-14 2011-06-08 富士通株式会社 通信制御装置および通信制御方法
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.
US8620818B2 (en) * 2007-06-25 2013-12-31 Microsoft Corporation Activation system architecture
US20090119744A1 (en) * 2007-11-01 2009-05-07 Microsoft Corporation Device component roll back protection scheme
US9047450B2 (en) * 2009-06-19 2015-06-02 Deviceauthority, Inc. Identification of embedded system devices
US9047458B2 (en) 2009-06-19 2015-06-02 Deviceauthority, Inc. Network access protection
US20100332319A1 (en) * 2009-06-24 2010-12-30 Craig Stephen Etchegoyen Methods and Systems for Dynamic Serving of Advertisements in a Game or Virtual Reality Environment
US9495190B2 (en) * 2009-08-24 2016-11-15 Microsoft Technology Licensing, Llc Entropy pools for virtual machines
US8726407B2 (en) * 2009-10-16 2014-05-13 Deviceauthority, Inc. Authentication of computing and communications hardware
CN103797490B (zh) 2011-03-15 2017-04-26 爱迪德技术有限公司 在使用秘密共享方案的计算环境中生成用于资产集合的标识符的容忍变化方法
EP2686767B1 (en) * 2011-03-15 2019-06-05 Irdeto B.V. Change-tolerant method for generating identifier for collection of assets in computing environment using error-correction code scheme
AU2011101295B4 (en) 2011-06-13 2012-08-02 Device Authority Ltd Hardware identity in multi-factor authentication layer
AU2011101297B4 (en) 2011-08-15 2012-06-14 Uniloc Usa, Inc. Remote recognition of an association between remote devices
US9143496B2 (en) 2013-03-13 2015-09-22 Uniloc Luxembourg S.A. Device authentication using device environment information
US9286466B2 (en) 2013-03-15 2016-03-15 Uniloc Luxembourg S.A. Registration and authentication of computing devices using a digital skeleton key
US11093656B2 (en) * 2018-11-14 2021-08-17 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment
EP4022470A4 (en) * 2019-08-28 2023-05-31 Sparta Systems, Inc. METHOD, APPARATUS AND COMPUTER READABLE MEDIUM FOR GENERATING AN AUDIT TRAIL OF AN ELECTRONIC DATA RECORD

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796220A (en) * 1986-12-15 1989-01-03 Pride Software Development Corp. Method of controlling the copying of software
US5113518A (en) * 1988-06-03 1992-05-12 Durst Jr Robert T Method and system for preventing unauthorized use of software
US5182770A (en) * 1991-04-19 1993-01-26 Geza Medveczky System and apparatus for protecting computer software
US5870543A (en) * 1995-06-07 1999-02-09 Digital River, Inc. System for preventing unauthorized copying of active software
US5826011A (en) * 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US5790783A (en) * 1996-03-28 1998-08-04 Advanced Micro Devices, Inc. Method and apparatus for upgrading the software lock of microprocessor
DE69720971T2 (de) * 1997-05-28 2003-10-30 Siemens Ag Computersystem und Verfahren zum Schutz von Software
US6134659A (en) * 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
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
US20040107368A1 (en) * 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
CA2310032A1 (en) 2000-06-09 2001-12-09 Andre J. Brisson Big soft brother
JP3840399B2 (ja) 2000-12-05 2006-11-01 健太 堀 ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体

Also Published As

Publication number Publication date
MY134635A (en) 2007-12-31
BRPI0400380A (pt) 2005-01-04
DE602004000106T8 (de) 2006-06-08
TWI319544B (en) 2010-01-11
RU2004106183A (ru) 2005-08-10
CN1542583A (zh) 2004-11-03
ATE306101T1 (de) 2005-10-15
US20040177255A1 (en) 2004-09-09
EP1455257B1 (en) 2005-10-05
CN100416445C (zh) 2008-09-03
KR20040078593A (ko) 2004-09-10
JP4599069B2 (ja) 2010-12-15
KR101036701B1 (ko) 2011-05-24
AU2004200683B2 (en) 2009-08-13
US7296294B2 (en) 2007-11-13
ZA200401493B (en) 2005-04-19
ES2250932T3 (es) 2006-04-16
EP1455257A1 (en) 2004-09-08
HK1068697A1 (en) 2005-04-29
DK1455257T3 (da) 2006-02-06
JP2004266841A (ja) 2004-09-24
TW200422945A (en) 2004-11-01
US20080098482A1 (en) 2008-04-24
DE602004000106D1 (de) 2006-02-16
US7647640B2 (en) 2010-01-12
CA2459217A1 (en) 2004-09-03
AU2004200683A1 (en) 2004-09-23
RU2348968C2 (ru) 2009-03-10
DE602004000106T2 (de) 2006-03-23
PL1455257T3 (pl) 2006-03-31

Similar Documents

Publication Publication Date Title
US7647640B2 (en) System for binding secrets to a computer system having tolerance for hardware changes
US7278131B2 (en) Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes
EP1469369B1 (en) Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
US7346780B2 (en) Integrity ordainment and ascertainment of computer-executable instructions
US7734921B2 (en) System and method for guaranteeing software integrity via combined hardware and software authentication
US7464269B2 (en) Secure method and system for handling and distributing digital media
WO2019229234A1 (en) Shared secret establishment
US7080249B1 (en) Code integrity verification that includes one or more cycles
KR20060127007A (ko) 능동 엔티티를 사용하는 소프트웨어 실행 보호
US7392523B1 (en) Systems and methods for distributing objects
US7552342B1 (en) Method and system for increasing the tamper resistance of a software application
Mambo et al. Fingerprints for copyright software protection

Legal Events

Date Code Title Description
FG Grant or registration