Patent Publication Number: US-6336114-B1

Title: System and method for restricting access to a data table within a database

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention generally relates to data security systems and, in particular, to a system and method for preventing unauthorized access of a information stored within a column of a data table. 
     2. Related Art 
     Current database systems store a variety of information, and it is often desirable to keep the information stored within many database systems private. Therefore, in many applications, it is important to allow only authorized users to access the information stored within a database system. Furthermore, it is often desirable for authorized users to access the information within the database system from remote locations. 
     In many prior art systems, a server at the premises of the database system is utilized to enable remote access to the database system. To retrieve data from the database system remotely, an authorized user establishes communication with the server, and the server verifies that the user is an authorized user. For example, the server typically requires the user to enter a valid password before allowing the user to connect to the database system. If the user enters a valid password, then the server allows the user&#39;s computer (the client) to connect to the database system. The client then queries the database system through Structured Query Language (SQL) queries (or other types of queries) in order to retrieve the desired data from databases within the database system. 
     Many times, the user is only authorized to access certain data within the database system. Therefore, the database system typically includes security features that restrict the user&#39;s access to certain data within the database system based on the user&#39;s password, which identifies the user. For example, many database systems include a plurality of data tables where each data table include multiple columns of information. A particular user might be authorized to access information in some of the columns but unauthorized to access information in other columns. Consequently, many secure database systems require a user password before allowing the user to retrieve information. The user password identifies the user to the database and is used by the database to deny access to any of the columns of information designated as unauthorized to the user. 
     However, in some situations, restricting an authorized user&#39;s access to columns of information within database system may not be sufficient. In this regard, a column of information in current database system is usually divided into a plurality of rows. It may be desirable to further restrict the data accessible to a user according to certain rows within the column. Furthermore, if an unauthorized user manages to discover a valid password, the impact of the breach of security can be minimized if the discovered password enables access only to certain tables and to certain rows within these certain tables. 
     Most current database systems, however, restrict access to a data table only to certain columns of information. Therefore, a valid password enables access to all of the information contained within a column that is accessible via the password. Consequently, the password supplied to a server may be used to restrict database access to certain authorized users and to certain columns of information within a database system. However, most current database systems fail to restrict database access of authorized users to certain rows of information stored within the columns of the database. 
     Thus, a heretofore unaddressed need exists in the industry for providing a more system and method for restricting access to the information within an accessible column of information in a database. 
     SUMMARY OF THE INVENTION 
     The present invention overcomes the inadequacies and deficiencies of the prior art as discussed herein. In general, the present invention provides a system and method for utilizing a server computer to restrict access to certain information within a column of database. 
     The present invention utilizes a client computer (client), a server computer (server), and a database system. The client establishes communication with the server and submits a request for data to the server. The server receives the request and retrieves data from a column within a table of the database system in response to the request. The server then determines which rows within the column can be accessed by a user of the client. The server discards data or requests for data associated with rows that the user is not authorized to access. 
     In accordance with another feature of the present invention, the server includes a security information table. The security information table includes predefined values that indicate which rows of information within the database system are accessible to the user. The server analyzes these values in order to determine whether the user is authorized to access a particular row. 
     The present invention has many advantages, a few of which are delineated hereafter, as mere examples. 
     An advantage of the present invention is that an authorized user can be prevented from accessing certain data within a column of a data table that is accessible to the user. 
     Another advantage of the present invention is that a database system can be remotely accessible without allowing unauthorized users to connect with the database system. 
     Another advantage of the present invention is that an authorized user only gains access to certain information within the database system. 
     Other features and advantages of the present invention will become apparent to one skilled in the art upon examination of the following detailed description, when read in conjunction with the accompanying drawings. It is intended that all such features and advantages be included herein within the scope of the present invention, as is defined by the claims. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention can be better understood with reference to the following drawings. The elements of the drawings are not necessarily to scale relative to each other, emphasis instead being placed upon clearly illustrating the principles of the invention. Furthermore, like reference numerals designate corresponding parts throughout the several views. 
     FIG. 1 is a block diagram illustrating a client/server system in accordance with the present invention. 
     FIG. 2 is a block diagram illustrating a client computer system in accordance with the principles of the present invention. 
     FIG. 3 is a block diagram illustrating a server computer system in accordance with the present invention. 
     FIGS. 4A and 4B depict a flow chart illustrating the functionality and methodology of the client server system of FIG.  1 . 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 depicts a client/server system  10  illustrating the principles of the present invention. Referring to FIG. 1, a client  14  is configured to communicate with a server  17   a  via communications network  18 . The client  14  is preferably a computer system located remotely from the server  17   a , which is preferably a computer system as well. As used herein, the terms “remotely located” or “remote location” shall refer to a location separated from the premises of a server  17   a  by an unsecure connection. An unsecure connection is any connection accessible by a hacker or unauthorized user. Examples of unsecure connections are, but are not limited to, Internet connections, Publicly Switched Telephone Network (PSTN) connections, cellular connections etc. The communications network  18  can comprise any conventional communications network or combinations of networks such as, for example (but not limited to), the PSTN, a cellular network, etc. Furthermore, the communications network  18 , along with the client  14  and server  17   a , may employ any protocol or combinations of protocols suitable for communicating information between the client  14  and the server  17   a.    
     The server  17   a  is preferably associated with and connected to a database system  19   a  having at least one database  20   a  or  20   b . The database system  19   a  is preferably any database system known in the art. Therefore, information stored within each database  20   a  and  20   b  can be accessed by the server  17   a  through known techniques. The database system  19   a  is preferably located on a premises of the server  17   a.    
     Referring now to FIG. 2, the client  17   a  preferably includes a control system  21  for controlling the operation of the client  14 . The client control system  21  along with its associated methodology is preferably implemented in software and stored in main memory  22  of the client  14 . Note that the client control system  21  can be stored and transported on any computer-readable medium for use by or in connection with a computer-readable system or method. In the context of this document, a computer-readable medium is an electronic, magnetic, optical, or other physical device or means that can contain or store a computer program for use by or in connection with a computer-related system or method. As an example, the client control system  21  may be magnetically stored and transported on a conventional portable computer diskette. 
     The preferred embodiment of the client  14  of FIG. 2 comprises one or more conventional processing elements  25 , such as a digital signal processor (DSP), that communicate to and drive the other elements within the client  14  via a local interface  26 , which can include one or more buses. Furthermore, an input device  28 , for example, a keyboard or a mouse, can be used to input data from a user of the client  14 , and a screen display  29  or a printer  31  can be used to output data to a user. A disk storage mechanism  32  can be connected to the local interface  26  to transfer data to and from a nonvolatile disk (e.g., magnetic, optical, etc.). The client  14  can be connected to a network interface  33  that allows the client  14  to exchange data with a network  34 . 
     Furthermore, as shown by FIG. 3, the server  17   a , as does the nearly identical server  17   b , preferably comprises a computer system similar to the client  14 . Similar to the client  14 , a control system  41  associated with the server  17   a  preferably controls the operations of the server  17   a . The server control system  41  along with its associated methodology is preferably implemented in software and stored in main memory  42  of the server  17   a . Note that the server control system  41  can be stored and transported on any computer-readable medium for use by or in connection with a computer-readable system or method. 
     Similar to the client  14 , the preferred embodiment of the server  17   a  comprises one or more conventional processing elements  45 , such as a digital signal processor (DSP), that communicate to and drive the other elements within the server  17   a  via a local interface  46 , which can include one or more buses. Furthermore, an input device  48 , for example, a keyboard or a mouse, can be used to input data from a user of the client  14 , and a screen display  49  or a printer  51  can be used to output data to a user. A disk storage mechanism  52  can be connected to the local interface  46  to transfer data to and from a nonvolatile disk (e.g., magnetic, optical, etc.). The server  17   a  can be connected to a network interface  53  that allows the server  17   a  to exchange data with a network  54 . Furthermore, the server  17   a  preferably maintains a password table  55  and a security data table  57  that can be accessed by the server control system  41  via local bus  46 . The password table  55  and security data table  57  will be discussed in further detail hereinbelow. 
     Referring again to FIG. 1, the client  14  is configured to establish communication with the server  17   a  through any suitable technique known in the art. For example, the client  14  can be connected to a modem  61  which establishes communication with a modem  63   a  connected to the server  17   a . Once communication between the modems  61  and  63   a  is established, the client  14  can communicate with the server  17   a  via communications network  18  and modems  61  and  63   a . However, it is sufficient for the purposes of the present invention that the client  14  be capable of communicating with the server  17   a , and one skilled in the art should realize that communications devices other than modems  61  and  63   a  (including modem  63   b  when communication with modem  17   b  is established) may be used to establish communication between client  14  and server  17   a . Therefore, modems  61 ,  63   a , and  63   b  are not necessary to implement the principles of the present invention. 
     After establishing communication with the server  17   a , the server  17   a  is designed to transmit a new encryption key to the client  14 . As known in the art, the encryption key can be used to encrypt and decrypt data through known encryption techniques, such as DES encryption, for example. In order to securely transmit the new encryption key to client  14 , the new encryption key is preferably encrypted through known encryption techniques (such as RSA encryption, for example) by the server  17   a  before transmitting the key to the client  14 . 
     In this regard, the client  14  is designed to have a public encryption key and a corresponding private encryption key pursuant to RSA encryption standards. The client  14  is configured to transmit the public encryption key to the server  17   a  when communication between the client  14  and server  17   a  are established. In response, the server  17   a  is designed to generate the new encryption key and to encrypt the new encryption key with the public key supplied by the client  14 . The server  17   a  is then designed to transmit the encrypted new encryption key to the client  14  which decrypts the new encryption key with the private key. Thereafter, both the client  14  and the server  17   a  are designed to encrypt and decrypt all data transmitted therebetween with the new encryption key pursuant to known encryption/decryption techniques, such as DES encryption/decryption techniques, for example. 
     Since a new encryption key is utilized for each new data session, attempts by unauthorized users to gain access to the database system  19   a  are frustrated. In this regard, the server  17   a  identifies a user through the log name and password transmitted to the server  17   a  as described hereinabove. If this data is not encrypted with a different encryption key (i.e., a new encryption key unique to each data session), then the log name and password are transmitted in the same form for each data session. Therefore, hackers can more easily break the encryption scheme and/or “spoof” the server  17   a  into allowing the hacker to gain access to the database system  19   a . The hackers can “spoof” the server  17   a  by intercepting the encrypted log name and password and transmitting a copy of the encrypted log name and password to the server  17   a  after establishing a data session with the server  17   a.    
     However, using a new encryption key for each data session causes the same data (e.g., the log name and the password) to appear in a different form for each data session. Therefore, it is more difficult to break the encryption scheme (i.e., discover the encryption key used to decrypt the data), and it becomes more difficult to spoof the server  17   a , since the server  17   a  is expecting a different form of the log name and password for each data session. Consequently, attempts by hackers to gain access to the database system  19   a  are frustrated by encrypting data with a new encryption key for each data session between the client  14  and the server  17   a.    
     As an alternative to encrypting the new encryption key with a public encryption key supplied by the client  14 , the new encryption key can be encrypted according to a standard algorithm by the server  17   a  before being communicated to the client  14 . The client  14  is preferably aware of the standard algorithm and is configured to decrypt the data sent from the server  17   a  via the standard algorithm in order to determine the new encryption key. For example, the server  17   a  can be configured to transmit a plurality of encryption keys along with an index indicating which of the keys is the new encryption key for the data session. The client  14  can be configured to process the index via the standard algorithm in order to determine which is the new encryption key. 
     As an example, the index could be a code word indicating the placement of the new key within the plurality of keys (e.g., indicating that the new key will be the tenth key transmitted by the server  17   a ). In this case, the client  14  is configured to decode the coded index in order to determine the placement of the new encryption key. In this regard, the client  14  may include a predetermined table of code words in memory  22  (FIG. 2) where each code word is correlated with a particular placement value. Accordingly, the client  14  can be configured to access the data table and to translate the coded index into the placement value of the new encryption key. Other algorithms may be employed for determining the new encryption key without departing from the principles of the present invention. 
     It should be noted that other types of encryption methodologies may be employed without departing from the principles of the present invention. Regardless of the encryption methodology utilized, it should be desirable to encrypt data with a new or different key for each data session, as described hereinabove. 
     After determining the new encryption key, the client  14  is designed to use the new encryption key to encrypt and transmit a predefined password and log name to the server  17   a . The predefined password is preferably unique to the user of client  14 , and the password and log name together can be used to identify the user. The server  17   a  is configured to receive the log name and the password and to decrypt the log name and the password with the new encryption key. Then, the server  17   a  is configured to translate the password into a new password (an “alias” password) that identifies the user of the client  14  to the server  17   a.  In order to implement the translation, the server  17   a  preferably maintains a password table  55  (FIG.  3 ). The password table  55  preferably includes an entry for each authorized user of the system  10 . Each predefined password associated with a user is correlated with a particular alias password and with the log name of the user associated with the predefined password. Therefore, through techniques known in the art, the server  17   a  can retrieve the alias password from the password table  55  based on the predefined password and log name supplied by the user of the client  14 . 
     After receiving the password from the client  14 , the server  17   a  is configured to identify the user of the client  14  via the password and log name received by the server  17   a . If the password supplied by the client  14  is not in the password table  55  or if the log name supplied by the client  14  does not match the log name associated with the password in the password table  55 , then server  17   a  is designed to identify the user as an unauthorized user. The server  17   a  preferably sends a message to the client indicating the nature of the problem and either terminates the data session or allows the user to reenter a new log name and/or password. 
     Once the server  17   a  has identified the user of client  14  as an authorized user, the client  14  is configured to encrypt a request for data using the new encryption key and to transmit the encrypted request for data to the server  17   a . The request for data can be of any form or can be in accordance with any protocol known to the server  17   a . In the preferred embodiment, the request for data is a predetermined data word (i.e., a code word) known to the server  17   a.    
     It should be noted that encryption of the request for data is not necessary for implementation of the present invention. This is especially true when the request is a predetermined code word, since an unauthorized user should be unfamiliar with the code word and therefore unable to extract any useful information from the request. However, encryption of the request makes it more difficult for unauthorized users to retrieve information from the database system  19   a  in cases where the unauthorized user is able to spoof the server  17   a  or to discover a valid password. This is because the server  17   a  will not retrieve any information from the database system  19   a  unless a valid request is submitted to the server  17   a , and encrypting the requests for data makes it more difficult for unauthorized users to discover valid requests for data. Therefore, encryption of the requests for data transmitted from the client  14  is not necessary but helps to ensure the overall security of the system  10 . 
     The server  17   a  is designed to receive the request for data and to decrypt the request for data using the new encryption key. Then the server  17   a  is designed to determine whether the information requested by the request for data is accessible to the user (i.e., authorized for viewing by the user). In this regard, the server  17   a  preferably includes security information that indicates which data within the databases  20   a  and  20   b  are accessible to each user. For example, although other embodiments are possible, the security information can be stored in a security data table  57  in which each entry of the security data table  57  corresponds to a user and indicates which information is accessible to the user. Therefore, through techniques known in the art, the server  17   a  is designed to retrieve the entry in the security data table  57  corresponding to the user of client  14 . Then, the server  17   a  is configured to determine whether the information requested by the client  14  is accessible to the user of client  14 . 
     If the server  17   a  determines that the information requested by the client  14  is inaccessible to the user of the client  14 , then the server  17   a  is configured to discard the request and to send a message to the client  14  indicating that access to the requested information is denied. However, if the server  17   a  determines that the requested information is accessible to the user of client  14 , then the server  17   a  is configured to query the appropriate database  20   a  or  20   b  for the requested information. In this regard, the server  17   a  is preferably designed to translate the request for data into a structured query language (SQL) query or other known types of queries. As known in the art, structured query language is a database language for querying, updating, and managing databases. Since the server  17   a  is aware of the information requested by the client  14  via the request for data transmitted from the client  14 , the server  17   a  is able to create an appropriate SQL query or other types of well known queries through query generating techniques known in the art. Therefore, the server  17   a  is designed to connect to the database system  19   a  and to submit an appropriate query to retrieve the information requested by the client  14 . As will be discussed in further detail hereinafter, the server  17   a  is preferably configured to utilize the alias password associated with the user of the client  14  when accessing the databases  20   a  and  20   b  within database system  19   a.    
     Alternatively, the server  17   a  can be configured to determine whether the user is authorized to access the requested data after the requested data is retrieved from the database system  19   a.  For example, in embodiments where the request for data transmitted from the client  14  is an SQL query (or other type of query capable of retrieving data from the database system  19   a ), it is preferable that the server  17   a  intercept the data retrieved from database system  19   a  and analyze the retrieved data for accessibility issues. After consulting the security data table  57 , the server  17   a  is configured to discard any data determined by the server  17   a  to be inaccessible to the user of client  14 . 
     It should be noted that portions of the data requested by the client  14  may be located in different databases  20   a - 20   d.  Furthermore, each of databases  20   a - 20   d  may have a different protocol for querying and retrieving data. For example, a portion of the data requested by the client  14  may be located in database  20   a , and a portion of the data requested by the client  14  may be located in database  20   b , which receives queries and transmits data according to a different protocol than that of database  20   a . As an example, database  20   a  may be an Oracle type database while database  20   b  may be a Microsoft Access type of database. The server  17   a  preferably is familiar with the protocols used by both databases  20   a  and  20   b . Therefore, the server  17   a  generates a first query (pursuant to the protocol utilized by database  20   a ) to database  20   a  in order to retrieve a portion of the data requested by the client  14 , and the server  17   a  generates a second query (pursuant to the protocol utilized by database  20   b ) to database  20   b  in order to retrieve another portion of the data requested by the client  14 . Accordingly, the server  17   a  is capable of retrieving the data requested by the client  14 , even when the requested data is located in different types of databases. 
     If part of the information requested by the client  14  is located in a remote database system  19   b  associated with a remote server  17   b , the server  17   a  is designed to create a request for data to be sent to the remote server  17   b . Similar to the request for data transmitted from the client  14  to the server  17   a , the request for data created by the server  17   a  can be of any protocol known to the remote server  17   b . In the preferred embodiment, the request for data is a data word (i.e., a code word) recognizable to the remote server  17   b . To ensure the security of the request, the server  17   a  may be designed to utilize the same security features utilized by the server  17   a  in dealing with client  14 . 
     In this regard, the server  17   a  preferably retrieves data from the remote server  17   b  in the same way that client  14  retrieves data from the server  17   a . Therefore, in response to the data session between the server  17   a  and the remote server  17   b , the server  17   a  transmits a public encryption key to the remote server  17   b . The remote server  17   b  generates a new encryption key for the data session between the server  17   a  and the remote server  17   b  and encrypts the new encryption key with the public key supplied by the server  17   a.  The remote server  17   b  transmits the new encryption key to the server  17   a,  which decrypts the new encryption key with the private key corresponding with the public key sent to the remote server  17   b.  Thereafter, the servers  17   a  and  17   b  encrypt and decrypt all data transmitted therebetween with the new encryption key generated by the remote server  17   b.    
     The server  17   a  then encrypts the user&#39;s password and log name with the new encryption key generated by the remote server  17   b  and transmits the log name and password to the remote server  17   b . The remote server  17   b  decrypts the password and log name with the new encryption key generated by the remote server  17   b  to verify that the requests transmitted by the server  17   a  are associated with an authorized user. The remote server  17   b  then translates the password into an alias password. The server  17   a  is designed to encrypt the request for data created by the server  17   a  and to transmit the request to the remote server  17   b . The remote server  17   b  is configured to decrypt the request with the new key generated by the remote server  17   b  and to translate the request into an appropriate query, preferably an SQL query. 
     Like the server  17   a , the remote server  17   b  is then designed to verify that the requested information is accessible to the user. If the user may retrieve the requested data, then the remote server  17   b  is designed to translate the request into an appropriate SQL query and to query the remote database system  19   b  for the data requested by the server  17   a . When the remote server  17   b  receives the queried information from database  20   c  or  20   d  in the remote database system  19   b , the remote server  17   b  is configured to encrypt the information with the new encryption key sent to the server  17   a  and to transmit the encrypted information to the server  17   a.    
     The server  17   a  may have to request information from multiple remote servers  17   b  in order to access all of the information requested by the client  14 . Once, the server  17   a  has received all of the requested information, the server  17   b  is designed to assimilate all of the retrieved data into a form compatible with the client  14 . Then, the server  17   a  is designed to encrypt the assimilated data with the new encryption key previously sent to the client  14  and to transmit the assimilated data to the client  14 . 
     The client  14  is designed to receive the data transmitted from the server  17   a  and to decrypt the data using the new encryption key previously sent from the server  17   a  for the data session. The client  14  may then display the decrypted data to the user or process the data as may be desired. 
     It should be noted that although each message transmitted between the client  14  and server  17   a  is encrypted in the present invention, the encryption of each message is not necessary to implement the present invention. In this regard, any of the messages communicated between the client  14  and the server  17   a  can be without encryption, although the security of each message not encrypted may be compromised. 
     Operation 
     The preferred use and operation of the client/server system  10  and associated methodology are described hereafter with reference to FIGS. 1 and 4. 
     Initially, a user registers with the system  10  and receives a log name and a password. In addition, the password table  55  (FIG. 3) at each of the servers  17   a  and  17   b  is updated with the password and the log name. In this regard, an entry is created in the password table  55  at each of the servers  17   a  and  17   b , and the password and the log name are entered into the entry. Furthermore, an alias password is assigned to the user which is also input into the entry in the password table. Next, the security data table  57  at each of the servers  17   a  and  17   b  is also updated by creating an entry for the user that indicates which data in the database systems  19   a  and  19   b  may be accessed by the user. 
     Once the user is registered with the system  10 , the user may establish communication with one of the servers  17   a  or  17   b , as shown by block  105  of FIG.  4 A. Assume for illustrative purposes that the user via client  14  establishes communication with the server  17   a . As shown by block  108  of FIG. 4A, the server  17   a  then generates and transmits a new encryption key for the current data session to the client  14 . The client  14  receives this new encryption key and uses the new encryption key to encrypt the data communicated by the client  14  in the remainder of the data session. 
     Preferably, the new encryption key is encrypted by server  17   a  before transmitting the new encryption key to the client  14 . In this regard, the client  14  can be configured to transmit a public encryption key to the server  17   a , through known encryption schemes, such as RSA encryption, for example. Before transmitting the new encryption key to the client  14 , the server  17   a  encrypts the new encryption key with the public encryption key transmitted by the client  14 . After receiving the new encryption key, the client  14  decrypts the new encryption key with a private key that corresponds with the public key used by the server  17   a  to encrypt the new encryption key. Thereafter, both the client  14  and server  17   a  have knowledge of the new encryption key and can encrypt/decrypt data transmitted therebetween with the new encryption key through known encryption schemes, such as DES encryption, for example. 
     After receiving the new encryption key from the server  17   a , the client  14  encrypts the user&#39;s password and log name with the new encryption key and transmits the password and log name to the server  17   a , as shown by block  111  in FIG.  4 A. The server  17   a  receives and decrypts the log name and the password using the new encryption known by the client  14  and the server  17   a . Utilizing a new encryption key unique for each data session frustrates attempts by hackers to spoof the server  17   a  with passwords and/or requests for data previously used in other data sessions. 
     The server  17   a  translates the password into an alias password by retrieving the alias password from the appropriate entry in the password data table  55 , as depicted by block  114  of FIG.  4 A. The server  17   a  compares the log name transmitted by the client  14  with the log name in the password data table entry corresponding with the password. If the log names match, the user of the client  14  is determined to be an authorized user. However, if the log names do not match, then the server  17   a  denies the client  14  access to the database system  19   a . The server also sends the client an error message and terminates the data session, as shown by blocks  117  and  121  of FIG.  4 A. Alternatively, the server  17   a  can be configured to allow the client  14  to send another password and/or log name. 
     Once the user is determined to be an authorized user, the user via client  14  encrypts and sends the server  17   a  a request for data, as depicted by block  126  of FIG.  4 A. As mentioned hereinbefore, the request for data is preferably a data word or words indicating which data the user of the client  14  wishes to retrieve. In this regard, each data word is preferably a code word recognizable to the server  17   a . Therefore, the client  14  preferably includes in memory  22  (FIG. 2) a list of code words that can be translated by the server  17   a into a query to the database system  19   a . The control system  21  (FIG. 2) preferably displays a list of options to the user through a menu or other type of suitable interface. The user selects a desirable option, and the control system  21  correlates the user&#39;s selection with the appropriate code word or words, which are then encrypted and transmitted to the server  17   a . Alternatively, other techniques known in the art may be employed to generate a request for data by the client  14 . 
     As shown by block  129  of FIG. 4A, the server  17   a  decrypts the request for data with the new encryption key and determines whether the user of the client  14  may access the requested data by consulting the security data table  57  (FIG.  3 ). If the client  14  has requested data inaccessible to the user of client  14 , then the server  17   a  sends an appropriate message to the client  14  and denies access to the inaccessible data, as shown by blocks  132  and  134  of FIG.  4 A. However, if the client  14  has requested accessible information, the server  17   a  translates the request into an appropriate SQL query (or other type of query compatible with the database system  19   a ) for retrieving the requested data from the database system  19   a , as shown by block  139  of FIG.  4 B. 
     The server  17   a  then connects to the database system  19   a  using the alias password retrieved from the password table  55  for the user of the client  14  (assuming that the database system  19   a  is a secure system requiring a password for access). The database system  19   a , through techniques known in the art, then allows the server  17   a  to query for data that is determined by the database system  19   a  to be accessible for the alias password. After receiving an SQL query (or other type of query if SQL protocol is not being used) from the server  17   a  and determining that the SQL query is a request for accessible data, the database system  19   a  retrieves the data requested by the SQL query and transmits this data to the server  17   a.    
     Since connectivity with the database system  19   a  is only established with the server  17   a  in the preferred embodiment, the database system  19   a  is isolated from outside sources (i.e., devices off of the premises of the server  17   a ). Accordingly, potential hackers are prevented from obtaining connectivity with the database system  19   a , thereby frustrating attempts by the hackers to retrieve unauthorized data from the database system  19   a.    
     It should be noted that the translation of the user password into an alias password as described hereinabove provides an extra level of security. As previously mentioned, it may be possible for an unauthorized user to discover an authorized user&#39;s log name and password. Therefore, if the unauthorized user manages to obtain connectivity with the database system  19   a  through a server not associated with the system  10 , the password used by the unauthorized user to access the database system  19   a  should not be valid. This is because the database system  19   a  only recognizes the alias passwords contained in the server  17   a . Since the alias passwords are preferably not transmitted across connections off of the premises of the server  17   a  (i.e., across connections accessible to the public), it is difficult for an authorized user to obtain the alias passwords. Accordingly, connectivity to the database system  19   a  should be denied unless the server  17   a  supplies the database system  19   a  with an alias password after the server  17   a  determines that the user is authorized to access the database system  19   a.    
     It should be further noted that many database systems  19   a  have the capability to restrict a user&#39;s view of a table within a database  20   a - 20   d  to a particular column or columns, if desired. Therefore, when the user is connected to the database system  19   a , the user can only see and retrieve data in a column accessible to the user. However, these database systems  19   a  typically fail to restrict the user&#39;s access of the data table according to the row number in the data table. Therefore, if a column includes both accessible data and inaccessible data, either the entire view of the column is blocked (thereby blocking access to the accessible information) or the column is accessible (thereby allowing the user to access or see the inaccessible information in the column). 
     However, in the present invention, the server  17   a  preferably acts as a liaison between the database system  19   a  and the client  14 , and the server  17   a  only returns the requested data that is accessible to the user. Therefore, if some information in a column of a data table in the database system  19   a  is accessible and if some information in the column is inaccessible to the user, the server  17   a  retrieves only the accessible information from the database system  19   a . As a result, the requested information can be returned to the client  14  by the server  17   a  without the user of the client  14  gaining access to the other information (e.g., the inaccessible information) in the column of the data table. Therefore, the server  17   a  of the present invention effectively limits the user&#39;s access to data in a data table down to the column and the row number of the data tables in the database system  19   a.    
     There are numerous methodologies that the server  17   a  may employ to determine which rows are accessible to the user. For example, and in no way limited thereto, the security data table  57  may include predefined information indicating which rows within the database system  19   a  are accessible to a particular user. Therefore, before the server  17   a  issues a query to the database system  19   a , the server  17   a  first consults the security data table  57  and determines whether the information requested by the client  14  is within rows accessible to the user of the client  14 . If the server  17   a  determines that the information requested by the client  14  is within rows accessible to the user of the client  14 , the server  17   a  submits a query to the database system  19   a  based on the request from the client  14 . However, the server  17   a  discards any portion of the request from the client  14  that pertains to information determined to be inaccessible to the user of the client  14  before issuing a query. Therefore, only data that is accessible to the user of the client  14  is retrieved from the database system  19   a  in response to the request from the client  14 . 
     To further illustrate the foregoing concept, assume that a data table in the database system  19   a  includes a plurality of rows and columns. For example, and in no way limited thereto, each row in the data table can represent a store within a chain of stores owned by a particular corporation. In other words, all of the information within each row of the data table pertains to a particular store within a chain of stores. Each column in the data table could correspond to a field of information relating to the stores in the data table. As an example, the fields may respectively indicate the store&#39;s street address, zip code, total costs, total revenue, etc. 
     Also, assume that it is desirable for a regional manager to only access the information in the data table pertaining to the stores within his region. In order to limit the manager&#39;s access to stores outside of his region, the security data table  57  may include an entry for the manager. In this entry, a list of all of the zip codes within the manager&#39;s region may be included. In other words, the zip codes may be used as an identifier to indicate which rows are accessible to the manager. 
     Therefore, when the server  17   a  receives a request from the client  14  for information within the database system  19   a  (when the manager is logged onto the client  14 ), the server  17   a first consults the security data table  57  to determine which zip codes are accessible to the manager. Then, the server  17   a  restricts the query for only data that pertains to the accessible zip codes. In this regard, the server  17   a  inserts a “where” statement or an “if” statement to limit the data retrieved by the server  17   a . For example, the query can be structured to return information from a row in the data table only where or only if the zip code field for the row includes a zip code listed as accessible within the security data table  57  for the identified user. By restricting the data retrieved from the data table in this way, the user can be prevented from accessing the data within any of the rows within the data table. 
     It should be noted that the server  17   a  can alternatively analyze the data retrieved from the database system  19   a  in order to restrict the user&#39;s access to certain rows of information. In this regard, the server  17   a  can consult the security data table  57  after retrieving the data requested by the client  14  to determine whether the retrieved data is accessible to the user of client  14 , and the server  17   a  can be designed to discard any row having a zip code not identified as accessible to the user via the security data table  57 . Therefore, the client  14  only receives data associated with rows determined by the server  17   a  to be accessible to the user of client  14 . Other similar methodologies for restricting the user&#39;s access to certain rows within the data tables of the database system  19   a  may be employed without departing from the principles of the present invention. 
     Once the server  17   a  receives the data from the database system  19   a , the server  17   a  determines whether a remote server  17   b  has access to any of the requested data not included in the database system  19   a , as depicted by block  142  of FIG.  4 B. If so, the server  17   a  creates a request for data and submits the request for data to the appropriate remote server  17   b  just as the client  14  submitted its request for data to the server  17   a , as shown by block  145 . The remote server  17   b  may utilize some or all of the security features previously described for the server  17   a . Therefore, after establishing a new encryption key for the data session between servers  17   a  and  17   b , the server  17   a  transmits the user&#39;s log name and password to the remote server  17   b . The remote server  17   b  verifies that the user is an authorized user and translates the password into an alias password. Then, the remote server  17   b  translates the request for data submitted by server  17   a  into an appropriate SQL query (or other type of query) for database system  19   b . Using the alias password, the remote server  17   b  retrieves the requested data from database system  19   b  and transmits the requested data in encrypted form to the server  17   a , as shown by blocks  147  and  149  of FIG.  4 B. If the remote server  17   b  determines that any of the data is inaccessible to the user, the remote server  17   b  discards the inaccessible data before transmitting it to the server  17   a.    
     After retrieving all of the requested data that is accessible to the user, the server  17   a  encrypts all of the retrieved data and transmits the encrypted data to the client  14 , as seen in block  155  of FIG.  4 B. The client  14  receives and decrypts the information transmitted by the server  17   a . As shown by block  158  of FIG. 4B, the client  14  then displays the information to the user of client  14  or otherwise processes the information as desired. 
     Due to the security features described hereinabove, the database system  19   a  is effectively secured from access by unauthorized users. Therefore, remote access can be provided to remote clients  14  via the server  17   a  without jeopardizing the contents of the database systems  19   a  and  19   b . In concluding the detailed description, it should be noted that it will be obvious to those skilled in the art that many variations and modifications may be made to the preferred embodiment without substantially departing from the principles of the present invention. All such variations and modifications are intended to be included herein within the scope of the present invention, as set forth in the following claims.