WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Protected software access control apparatus and method    
United States Patent4652990   
Link to this pagehttp://www.wikipatents.com/4652990.html
Inventor(s)Pailen; William (Derwood, MD); Harper; Jim L. (Olney, MD)
AbstractA software access control system is disclosed for controlling access to a protected application program. The software access control system comprises first and second processors, each having a terminal or port adapting its processor to be coupled with the other. The first processor is programmed to permit access to the protected application program and comprises a first memory storing the protected application program, a program identification manifestation and a customer identification manifestation. The second processor comprises a second memory for storing a program identification manifestation and a customer identification manifestation, as assigned to the second processor. A user terminal is actuated to transmit an access request message including a requested program identification manifestation to the first processor requesting permission to execute a particular application program. There is disclosed a two-step process of granting access to a protected application program. First, the requested program identification manifestation, as entered on the user terminal, is compared with a program identification manifestation retained within the second processor. If there is a first match, a customer authentication message is transmitted from the first processor to the second processor. In response, the second processor transmits its assigned customer identification manifestation to the first processor, wherein a comparison is made between the retained customer identification manifestation and the assigned customer identification transmission. If there is a second match, access to use and to execute the application program is granted.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4652990
Protected software access control apparatus and method - US Patent 4652990 Drawing
Protected software access control apparatus and method
Inventor     Pailen; William (Derwood, MD); Harper; Jim L. (Olney, MD)
Owner/Assignee     Remote Systems, Inc. (Vienna, VA)
Patent assignment
All assignments
Publication Date     March 24, 1987
Application Number     06/546,206
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 27, 1983
US Classification     705/56 380/46
Int'l Classification     H04Q 005/00 H04L 009/00
Examiner     Eng; David Y.
Assistant Examiner    
Attorney/Law Firm     Neuman, Williams, Anderson & Olson
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/200 MS File 364/900 MS File 340/825.3 340/825.31 340/825.34 178/22
Patent Tags     protected software access control
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4471163
Donald
705/55
Sep,1984

[0 after 0 votes]
4438824
Mueller-Schloer
713/185
Mar,1984

[0 after 0 votes]
4386234
Ehrsam
380/281
May,1983

[0 after 0 votes]
4326098
Bouricius
713/155
Apr,1982

[0 after 0 votes]
4317957
Sendrow
705/71
Mar,1982

[0 after 0 votes]
4315101
Atalla
705/75
Feb,1982

[0 after 0 votes]
4310720
Check, Jr.

Jan,1982

[0 after 0 votes]
4288659
Atalla
380/281
Sep,1981

[0 after 0 votes]
4283599
Atalla
705/72
Aug,1981

[0 after 0 votes]
4281215
Atalla
705/72
Jul,1981

[0 after 0 votes]
4268715
Atalla
705/75
May,1981

[0 after 0 votes]
4264782
Konheim
705/75
Apr,1981

[0 after 0 votes]
4259720
Campbell
705/71
Mar,1981

[0 after 0 votes]
4238853
Ehrsam
380/45
Dec,1980

[0 after 0 votes]
4238854
Ehrsam
713/165
Dec,1980

[0 after 0 votes]
4227253
Ehrsam
380/45
Oct,1980

[0 after 0 votes]
4223403
Konheim
705/72
Sep,1980

[0 after 0 votes]
4218738
Matyas
705/72
Aug,1980

[0 after 0 votes]
4214230
Fak
235/380
Jul,1980

[0 after 0 votes]
4193131
Lennon
380/281
Mar,1980

[0 after 0 votes]
4123747
Lancto
713/185
Oct,1978

[0 after 0 votes]
4025760
Trenkamp
705/73
May,1977

[0 after 0 votes]
3996449
Attanasio
235/431
Dec,1976

[0 after 0 votes]
3985998
Crafton
235/380
Oct,1976

[0 after 0 votes]
3956615
Anderson
705/72
May,1976

[0 after 0 votes]
3892948
Constable
340/5.41
Jul,1975

[0 after 0 votes]
3846622
Meyer
340/5.54
Nov,1974

[0 after 0 votes]
3798605
Feistel
713/155
Mar,1974

[0 after 0 votes]
3761883
Alvarez
711/164
Sep,1973

[0 after 0 votes]
3611293
Constable
WITHDRAWN
Oct,1971

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A software access control for limiting access to an executable program to an authorized user, said software access control system comprising:

(a) data communication means for transmitting an access request message requesting permission to execute a selected program;

(b) processor means comprising means for controlling access to said program, means for executing said program, first memory means for storing said program and a manifestation identifying said selected program, and first means coupled to said data communication means and responsive to the receipt of said access request message for transmitting an authentication message including said selected program identifying manifestation;

(c) portable key means possessed by the authorized user and comprising second memory means for storing a program identifying manifestation assigned to said key means; and

(d) means coupled to said processor means for releasably receiving said key means and responsive to said authentication message for detecting the presence of said portable key means and, if present, for applying said authentication to said portable key means;

(e) said portable key means comprising means responsive to said applied authentication message for accessing said second memory means to obtain from said second memory means said assigned program identifying manifestation, for determining whether there is a match between said selected program identifying manifestation and said assigned program identifying manifestation and, if there is a match, for generating and transmitting to said access controlling means of said processor means an access granting signal whereby said access controlling means permits access to the executable program.

2. The software access control system as claimed in claim 1, wherein said key means comprises a programmed processor.

3. The software access control system as claimed in claim 1, wherein said selected program identifying manifestations is embedded in said program.

4. A software cross control system for limiting access to an executable program to an authorized user, said program having a first manifestation particularly identifying said program and a second manifestation particularly identifying an authorized user to be granted access to the executable program, said software access control system comprising:

(a) data comunication means for transmitting an access request message requesting permission to execute a selected program;

(b) processor means comprising means for executing said program, first memory means for storing a program and its first and second identifying manifestations, and first means responsive to the receipt of said access request message for transmitting a program authentication message including said selected first identifying manifestation;

(c) portable key means possessed by the authorized user and comprising second memory means for storing an assigned first identifying manifestation assigned to said key means and identifying that program to which access is to be granted, and a second identifying manifestation assigned to said key means its authorized user;

(d) means coupled to said processor for releasably receiving said portable key means and comprising means responsive to said program authentication message for determining the presence of said portable key means and, if present, for accessing said second memory means to obtain said assigned first identifying manifestation, and matching means for determining whether there is a match between said selected first identifying manifestation and said assigned first identifying manifestation indicating that a corresponding key means is coupled to said processor means;

(e) said key means including means responsive to said match between said selected and assigned first identifying manifestations for obtaining said assigned second identifying manifestation from said second memory means and for transmitting said second assigned identification manifestation to said processor means; and

(f) said processor means comprising matching means for obtaining from said first memory means said second identifying manifestation and for comparing said second identifying manifestation with said assigned second identifying manifestation to determine whether there is a match therebetween and, if there exists a match, for providing an access permission signal, said executing means responsive to said access permission signal for enabling the execution of said program.

5. The software access control system as claimed in claim 4, wherein said key means comprises a programmed processor.

6. The software access control system as claimed in claim 4, wherein said first and second identifying manifestations are embedded in said program.

7. A software access control system for limiting access to a protected program to an authorized user, said protected program having at least one manifestation particularly identifying an authorized user to be granted access to said protected program, said software access control system comprising:

(a) data communication means for transmitting an access request message requesting permission to gain access to a selected protected program;

(b) processor means comprising means for executing said protected program, first memory means for storing a program, and means responsive to the receipt of said access request message for transmtting a program authentication message indicative of said selected protected program if said selected protected program is stored in said first memory means;

(c) portable key means possessed by the authorized user and adapted to be coupled to said processor means and comprising second memory means for storing an identifying manifestation assigned to said key means and indicative of its authorized user; and

(d) means coupled to said processor means for releasably receiving said portable key means and comprising means for receiving and analyzing said authentication message to determine whether said portable key means is present and, if present, for determining whether said authentication message is compatible with said key means;

(e) said key means including means, actuable if said program authentication message is compatible with said key means, for obtaining said assigned identifying manifestation from said second memory means and for transmitting said assigned identification manifestation to said processor means;

(f) said processor means further comprising matching means for receiving and comparing said assigned identifying manifestation with said identifying manifestations stored in said first memory means and, if there is a match, for providing an access permission signal.

8. The software access control system as claimed in claim 7, wherein said executing means is responsive to said access permission signal for enabling the execution of said selected protected program.

9. The software access control system as claimed in claim 7, wherein said identifying manifestation is embedded in said protected program.

10. A software access control system for limiting access to a protected program to an authorized user, said protected program having at least one manifestation particularly identifying an authorized user to be granted access to said protected program, said software access control system comprising:

(a) means for transmitting a program authentication message requesting permission to gain access to a selected protected program;

(b) processor means comprising means for executing said protected program and first memory means for storing a program;

(c) portable key means possessed by the authorized user and adapted to be coupled to said processor means and comprising second memory means for storing an identifying manifestation assigned to said key means and indicative of its authorized user; and

(d) means coupled to said transmitting means for receiving releasably said key means, and comprising means for receiving and analyzing said authentication message to determine whether said portable key means is present and, if so, to determine whether it is compatible with said key means;

(e) said key means including means, actuatable if said program authentication message is compatible with said key means, for obtaining said assigned identifying manifestation from said second memory means and for transmitting said assigned identification manifestation to said processor means;

(f) said processor means further comprising matching means for receiving and comparing said assigned identifying manifestation with said identifying manifestations stored in said first memory means and, if there is a match, for providing an access permission signal.

11. A software access control system for limiting access to a plurality of protected programs to authorized users, each of said protected programs having a list of manifestations, each manifestation identifying an authorized user to be granted access to a corresponding program, said software access control system comprising:

(a) processor means comprising means for controlling access to said protected programs, first memory means for storing said plurality of programs and said list of user identifying manifestations, means for generating and transmitting an access request message requesting permission to gain access to a selected one of said plurality of protected programs;

(b) portable key means possessed by an authorized user and comprising second memory means for storing a user identifying manifestation assigned to said key means; and

(c) means for releasably receiving said portable key means, said receiving means comprising means for determining the presence of said portable key means and, if present, for applying said access request message to said received portable key means;

(d) said portable key means comprising means for interpreting said applied access request message to determine whether it is compatible with said key means, and means for transmitting said assigned user identifying manifestation if said interpreted access request message is compatible with said key means;

(e) said access controlling means coupled to said transmitting means to receive said user assigned identifying manifestation for determining whether said transmitted, assigned user identifying manifestation matches one of said list of user identifying manifestations of said selected one protected program and, if there is a match, for granting user access to said selected protected program.

12. The software access control system as claimed in claim 11, wherein said receiving means comprises means for releasedly receiving a plurality of said key means and means coupled to receive said access request message for applying said access request message in order to each of said key means presently associated with said receiving means.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

This invention relates to apparatus and methods for protecting software stored in reproducible media, whereby theft and, in particular, unauthorized reproduction and/or execution of the protected software is prevented.

DESCRIPTION OF THE PRIOR ART

In the prior art, authors and publishers of software programs for computers have had no acceptable means to prevent the copying of their programs by unauthorized individuals. The most common storage medium for these programs is the magnetic disk or its functional equivalents. Once the program is released to the user in this medium, it is a fairly simple task to have a computer read the software program and store it temporarily in the memory of the user's computer until such time as a blank disk can be placed in the computer and the computer can then release from its memory and record the program on the blank disk. Accordingly, every year the owners and publishers of these programs are being cheated of revenues due them for their product, by the user copying the program from a friend at no cost to the user. In this manner, individuals and businesses alike are acquiring hundreds or thousands of dollars worth of programs for the mere cost of the blank disk, which in most cases costs less than $10.

The relative explosion of the microcomputer market for use in the office and home has propelled the problem of software piracy to near epidemic proportions. Software development for microcomputers, for example, is expensive and time consuming. It is therefore important to the software developer that each authorized user pay for the programs used and not reproduce the programs to be used by others or at other sites. Software piracy is, in practice, difficult to prevent because it is generally easy for users to make multiple copies of the programs for unauthorized users, and easy for competitors to repackage and distribute valuable programs at a fraction of the cost to the original developer. The problem is aggravated by the existence of microcomputers which are becoming widespread.

Software manufacturers and publishers are losing millions of dollars every year in revenues due to the piracy of their programs, both by professionals as well as the hobbyist or casual users. Published 1982 statistics indicate that the average personal computer owner, also possesses at least five application programs. It is further believed that three application programs were purchased and the other two were pirated. The advent of program rentals and computer clubs will further compound this problem.

In the past, software manufacturers have tried to prevent the problem by writing unique codes or routines and embedding them in the storage mediums in a fashion that would disable the program in the event that the proper code was not present. Even the unsophisticated user can easily figure a way to get around or beat this technique, by copying the program as published, listing it out and looking for the unique codes, or passwords. Once he has found the password and can determine its function in the program, he can easily defeat it.

Access keys have been employed in the prior art to gain access to computers. In those key/computer security systems where only the software programs, and not the key itself, contain active encoding and decoding algorithms, the program information can be easily read and related to the corresponding key information contained in the software program. As a result, the key can be discerned and used subsequently to defeat the security system.

The most effective way to secure a program for its intended use, is believed to be by the use of a hardware key which works in conjunction with the software program. Some of the same problems exist with respect to defeating the security of such key mechanisms. Previously reported attempts to develop a hardware solution have suffered from a number of disadvantages.

First, the key information is contained only on the software storage medium itself in some implementations. Therefore, making a complete copy of the medium will result in the possibility of creating an unauthorized copy of the program since the key can be copied along with the protected program. When used normally, the approach further suffers by preventing the user from making legitimate back-up copies of the software program and renders it impossible to use the programs with large bulk storage devices.

Other techniques have been developed to contain the key information with a read only memory (ROM) which is interrogated by the software program prior to authorized execution. The defeat of this technique lies in the ability of the unauthorized user to record the interrogation of the ROM key and to use the key information including the password for the creation of duplicate keys. In particular, such ROM keys are coupled by exposed cables or ports to the computer, whereby access to the transmitted password between the ROM key and the computer is available to the unauthorized user. Typically, the transmission of data between the computer and the ROM key is accessed and then stored in a table, where the stored key data is analyzed to reveal the password.

Techniques have been developed to encrypt the key information including the password to prevent easy discovery of the password. If encryption is effected in a fixed manner, the password may be discovered by storing repeated transmissions between the ROM key and the computer in a table. The stored transmissions can be observed to discern the password to simulate the original key's function or to allow duplicate keys to be created. Even worse, these observed patterns can allow the relationship between the key information and the software program to be deduced so that an unauthorized universal master key can be created.

The prior art is replete with various methods and apparatus for encrypting data to be transmitted over lines, whereby even if the data is intercepted, stored within a table or memory and later analyzed, it would be difficult to decipher the encoding technique. It is evident that the degree of data or software security is dependent upon the nature of the encryption technique. Such techniques have been developed in a context of network systems comprising a computer and a plurality of remote terminals, whereby a user gains access to the computer through a remote terminal. The user's access request is transmitted over a communications link to the computer. In many applications, it is critical that only authorized users be capable of gaining access to the computer and/or have access to the data transmitted over the communications link.

Such data transmission security systems have been adapted to banking applications. Typically, a bank customer accesses a centrally disposed computer by entering his personal identification number (PIN) to be transmitted via the communications link to the central computer. If the customer's PIN has a match with a like PIN stored within a table of many PINs, a transaction is then authorized to be completed. To prevent unauthorized access to a customer's PIN or other data, the access request including the customer's PIN is encrypted to prevent recognition. It is well recognized in the art that it is virtually impossible to secure such communication links; as a result, the unauthorized user may gain access to the link and store the flow of data thereof for later analysis.

U.S. Pat. Nos. 4,268,715 and 4,281,215 of Atalla disclose a method of encrypting a user's PIN for transmission from the user station to a processing station. In particular, an encoding algorithm module is responsive to the output of a random number generator to provide a first encryption key. The encryption key is applied to an encryption module which provides an encrypted message indicative of the data to be secured. The encrypted message is then transmitted from the user station to the processing station, along with the random number and the key. A decryption module at the processing station decrypts the encrypted message using the transmitted key and random number. In this manner, the user's PIN is not transmitted over the communication links, where it would be available potentially to be read and discovered by an unauthorized user.

U.S. Pat. No. 4,310,720 of Check, Jr. discloses a computer accessing system, wherein a user enters his password into a portable access unit to be encrypted as an access code to be transmitted over a communications link to a computer. In particular, the access unit comprises a microprocessor programmed with a random number algorithm for generating a chain of nonrecurring, pseudorandom numbers from a group of seed numbers originally implanted in the microprocessor's memory. The pseudorandom numbers are used to encode the password to form the access code. The computer is programmed with a congruent random number generation algorithm and initial seed numbers compatible with those stored in the microprocessor of the access unit. The computer is initialized such that the initial access code generated by each access unit is stored in an available memory at the computer. Thus, the computer generates a chain of congruent random numbers, whereby a corresponding access code is provided to be compared with that access code transmitted from the remote access unit; if a match is made, access