×

System for automatic, secure and large scale software license management over any computer network

  • US 20050289072A1
  • Filed: 06/29/2004
  • Published: 12/29/2005
  • Est. Priority Date: 06/29/2004
  • Status: Abandoned Application
First Claim
Patent Images

1. An improved and scalable network based license management system that securely controls software licenses for networked or occasionally-networked applications over any local, wide area or wireless network, that allows large numbers of licensed applications, up to several hundred thousand licensed application installations or more, to be concurrently in a license-activated state on behalf of one or a multitude of software vendors, multitudes of their customers and one or a multitude of application programs, whether executing or not, with a networked license server, whether executing or not, and capable of running on a computer with average power and constructed with components of average reliability, such as a personal computer, with no assumptions about the quality of network availability, comprising:

  • a. A license storage means for storing in non-volatile storage on a server machine;

    i. an encrypted floating license key that encodes an overall limit on the number of licenses for a given protected program, together with additional licensing policy information such as features, expiration dates and metering limits. ii. the current activation state and machine location on a network of each activated copy of a license protected program that is activated with said network licensing system, where an activated instance may not necessarily be executing in order to be considered to be activated, and where the activated instance enters an inactive state either upon expiration of an activation lease time limit defined at the time of activation and recorded in said current activation state, or due to an explicit deactivation operation as determined by the application'"'"'s software developer, and where the definition of machine location is determined by the application'"'"'s software developer and may include but is not limited to any combination of a physical machine name, unique machine identification hardware parameters, or logical names defined by a proxy application such as a terminal server or web server. b. A license server computer software program comprising;

    i. a license repository comprising said license storage stored in a persistent transactional structure such as a relational database, such that both the license data and license state data stored in said license storage survive program and machine failures without loss of structural integrity, and such that said license server is not required to be running at the same time that said applications or their proxies or agents are running in order to prevent oversubscription of licenses, ii. a license processing module that provides means to process license activation and deactivation requests over a network, said activation and deactivation requests corresponding to requests and releases of leased units of licensing maintained in said license repository and recorded individually in said license repository, the success or failure of such license activation and deactivation requests being dependent on limits and licensing policies maintained in said license repository, and such that a leased activation is automatically and implicitly deactivated upon termination of its release without requiring a cleanup process, and such that upper and lower limits may be specified on the duration of a granted activation lease iii. a network listener module that accepts and responds to said license activation and deactivation requests from applications seeking protection over a local or wide area network and uses said license processing module to implement the requests, said network listener module utilizing a stateless network communication protocol that requires a network connection only for the duration that said license server processes said licensing request. c. A client license library program that provides application programming interfaces to said license enabled applications for the purposes of communicating activation and deactivation requests to said license server and for managing the local generation of encrypted license keys from the activation state for possible local storage and the reconstruction and verification of the activation state from said locally generated key, such that the locally generated key may be saved in non-volatile storage in order to enable an activated program to be in a non-executing state without losing its activation status due to said program not executing, including;

    i. application programming interfaces for the purpose of activating a license based on a logical or physical machine identification information such as a machine fingerprint that uniquely identifies the requester'"'"'s location, and for deactivating the license, in conjunction with said license server ii. application programming interfaces for the purpose of introspecting the properties of an activated license including application state information maintained in said license storage by said license server, licensing policy information such as expiration timestamp, and logical client machine identification information iii. application programming interfaces for the purpose of locally generating an encrypted license key from an activation state obtained through said activation application programming interface, and autonomously reconstructing and verifying said locally generated encrypted license key without communicating with said license server, said verification including matching machine fingerprints, validating the license is for the application, and verifying that the activation duration has not expired iv. application programming interfaces for the purpose of validating the client machine'"'"'s system clock against the system clock timestamp returned by said license server during activation. whereby said license server and application are not required to be running or have a continuous network connection in order for license protection to be in effect, whereby said license server can accommodate a number of concurrently-active licenses that are not limited by machine processing power or memory but only by said license repository database capacity, whereby said license server may be hosted at the software vendor'"'"'s premises on behalf of all of said software vendor'"'"'s customers and accessed over the Internet, thereby alleviating said customers of the responsibility of installing and administering said license server at said customers'"'"' premises.

View all claims
  • 0 Assignments
Timeline View
Assignment View
    ×
    ×