1. Field of the Invention.
This invention relates in general to computer security and authentication, and more particularly to a method, apparatus and program storage device for providing a secure password manager.
2. Description of Related Art.
Today's information systems contain private information, individually sensitive information or personalized information, so they require users to identify themselves, using login credentials such as username and password, before access to the secured information is granted. Similarly, many information systems require their users to identify themselves before authorization and billing procedures. However, most information systems do not share login credentials and therefore a user that uses several information systems needs to be able to supply the correct login credentials to each information system that he or she wishes to use. This creates several practical problems since the user of multiple information systems needs to remember or record his or her login credentials for each information system, e.g., for online accounts, credit card sites, etc.
The foundation for secure identity management is identity, and a key component of user identity is the set of aforementioned passwords. As a result, password management, including the ability to effectively and efficiently manage passwords as a critical part of the user's identity, is a key component of identity management. Password management leverages the user's identity to provide secure access to resources for both internal and external users.
It should be noted that the term “password” is being used in this application to denote any piece of information that can be used for authentication purposes. PIN codes, social security numbers, pass-phrases, etc. all fall under this category.
Password management, however, is becoming more difficult as organizations rapidly increase the complexity of their IT infrastructures by adding applications and services-each with a separate login process. Users have to remember a large and growing number of passwords to access the resources they need and administrators have to manage those passwords. The result is lower user productivity, increased security risks, and higher system administration and support costs.
A common habit of users burdened with a large number of passwords is to use a single password across multiple sites. This can cause a breach in security for even the most secure systems. For example, if a user uses the same password for online banking and a public e-mail account, breaking the e-mail account security may be easier for a hacker than getting through the security of online bank. But the hacker now controls both accounts, due to the common password. Hence, it is important to provide a way for users to manage multiple passwords.
The earliest solutions for these problems included writing down various passwords on a paper, or storing them in a text file. Neither writing passwords on paper nor storing passwords in a text file is secure, since anyone with access to the paper or the text file can get access to all online accounts. Software utilities have been developed for managing passwords by storing the identity validation information of the different systems and entering it whenever the user accesses any of those systems. These tools are called password managers and some of them are even integrated into popular browsers like Internet Explorer and Mozilla Firefox.
Password managing utilities have two major shortcomings. First, since the information is stored locally, these systems only work on the computer on which they are installed. Whenever a user needs to access any of the information systems from a different computer, these utilities obviously become ineffective. Second, having the identification information stored on the computer exposes it to possible intrusions and break-ins by hackers or other people with access to the computer.
More recently, software-based solutions have been released, which allow customers to keep passwords in a “database”. This “database” is kept on a non-volatile medium, frequently the hard disk, and can be as simple as a text file with comma-separated entries, or a custom binary format that “hides” the passwords. Note that the term “database” is used in a very loose manner by such password manager, since bundling an enterprise-strength database with a password manager application would make the application extremely large and difficult to manage. So, the terms “database” and “file” are used interchangeably in this filing, to refer to the file-based storage of passwords.
The problem with existing solutions is two-fold. First, a weak or non-existent password is used to generate the key that is used to encode the password. For example, browsers frequently cache the password, providing the “convenience” that the user is not prompted for password. This reduces the security of the solution to the level of the underlying operating system (while also affecting the portability of the approach). Second, it is common to encrypt only the passwords, leaving it possible for hackers to guess how many entries are present in the database. As a common key is used to encode all passwords within the entire database, these solutions are prone to “Known-password” attacks. If the hackers are able to obtain the password for one entry (either through entrapment, guessing or dictionary-based attacks), they now have the original password and the encrypted password for the entry, making it trivial for them to find out the key used for encrypting the passwords. They can then use this key to decrypt all other passwords in the database.
It can be seen that there is a need for a method, apparatus and program storage device for providing a secure password manager.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a method, apparatus and program storage device for providing a secure password manager.
The present invention solves the above-described problems by combining the portability of file-based password storage with protection against known-password attacks. The password manager allows users to copy their password files onto a portable storage such as a USB key for mobility.
A method for managing passwords in accordance with an embodiment of the present invention includes providing a data structure comprising a header and N slots, providing an indicator in a predetermined position of the header for identifying a number of valid password entries for the data structure, writing R*N random bytes of data to the N slots, wherein R is the size of each slot, calculating a hash value based on the content of the N slots, storing the calculated hash value in the header and feeding data in the data structure and a master password through a key generator to create encrypted data.
In another embodiment of the present invention, an apparatus for securing passwords is provided. The apparatus includes memory for implementing a password repository and a processor, coupled to the memory, for executing the programs of instructions and for accessing the password repository, wherein the programs of instructions comprise a software application component for securing passwords against attack attempting to obtain passwords, the software application component being adapted for instantiating a password manager configured for providing a data structure comprising a header and N slots, providing an indicator in a predetermined position of the header for identifying a number of valid password entries for the data structure, writing R*N random bytes of data to the N slots, wherein R is the size of each slot, calculating a hash value based on the content of the N slots, storing the calculated hash value in the header and feeding data in the data structure and a master password through a key generator to create encrypted data.
In another embodiment of the present invention, a program storage device is provided. The program storage device includes program instructions executable by a processing device to perform operations for providing a secure password manager, the operations including providing a data structure comprising a header and N slots, providing an indicator in a predetermined position of the header for identifying a number of valid password entries for the data structure, writing R*N random bytes of data to the N slots, wherein R is the size of each slot, calculating a hash value based on the content of the N slots, storing the calculated hash value in the header and feeding data in the data structure and a master password through a key generator to create encrypted data.
These and various other advantages and features of novelty which characterize the invention are pointed out with particularity in the claims annexed hereto and form a part hereof. However, for a better understanding of the invention, its advantages, and the objects obtained by its use, reference should be made to the drawings which form a further part hereof, and to accompanying descriptive matter, in which there are illustrated and described specific examples of an apparatus in accordance with the invention.
Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
In the following description of the embodiments, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration the specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized because structural changes may be made without departing from the scope of the present invention.
The present invention provides a method, apparatus and program storage device for providing a secure password manager. The portability of file-based password storage is combined with protection against known-password attacks. The password manager allows users to copy their password files onto a portable storage such as a USB key for mobility.
Those skilled in the art will recognize that the present invention is not meant to be limited to the structure illustrated in
Those skilled in the art will also recognize that the environment illustrated in
The total amount of storage space required for the database depends upon the number of records, the size of each record and a predetermined amount of storage for header information. The total storage space may be calculated according to:
S=R*N+H;
wherein S is the total amount of storage space, in bytes, required for the password database, R is the size of each record and N is a predetermined large number, e.g., 1000. N is actually equal to the number of passwords that can be handled plus 1. The strength of the proposed method is inversely proportional to the value of N. Accordingly, the value for N should be set to a sufficiently high value. H is the space needed to store some header information.
As newer, more secure key generators become available, a new key generator can be added to the list without modifying the method or apparatus discussed here. This allows the Password Manager to remain independent of key generation algorithms. It should be noted that a weak key generator will reduce or eliminate the effectiveness of the proposed method. Hence, due diligence must be applied when selecting a key generator.
Also at install time, the application generates R*N random bytes 714, using any secure mechanism publicly available. The only criterion for the random generation of R*N bytes is that the bits should be sufficiently random. This serves as the initial contents of the database. The user selects a master password 716. The master password may be either a word or passphrase, but must be something that the user must never forget and must never share. The only piece of information that secures the entire set of passwords is the master password (MP). There is no protection, either in the present invention, or elsewhere, for a stolen master password because there is no other way to decrypt the encrypted password database. It is possible to use Biometrics or other authentication mechanisms for providing the master password. The proposed method does not have a dependency on the Master Password generation.
The application now selects a random slot (from N slots 520 shown in
At this time, all of Slot 1 through Slot N is filled with random data 722, and Slot V, the randomly chosen slot chosen from the N slots 520 shown in
Now, slot V, which is identified by the index for Slot V that is stored in the header, is used to store the new record, and a new empty slot V (Where is this one?) is randomly chosen from the N slots 520 shown in
The method for securing passwords according to an embodiment of the present invention protects against known password attacks. For example, if the hacker is looking at the encrypted file, the hacker cannot identify which entries in the file are valid, even if R and N are known. If the hacker observes the N slots (520 as shown in
If the hacker examines a new password database file that has one more entry, the changes between the two files will be very large. This is based upon the selection of a good hash function since a good hash function will modify the hash (and as a result, the encrypted database) so drastically, for even single-bit changes in unencrypted data, that there will be no comparison possible between the two database files. The strength of this protection is, thus, also dependent on selection of good hash function and key generator.
Accordingly, a hacker cannot launch a “known-password” attack, and cannot use the delta between two files to detect the changes. This results in a secure database that is portable. As long as the master password (MP) is secure, sufficiently large value for N is selected and good key generation and hashing functions are used, the password manager according to an embodiment of the present invention will be protected against attacks.
Note that if the master password is lost, there is no way the passwords can be recovered. This is a major strength of the proposed solution, as it simplifies password management to a single Master Password, while ensuring that selection of passwords for one entity does not have any effect on the security of another entity.
For the purposes of this description, a computer-usable or computer readable medium 1068 can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium 1068 may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
A system suitable for storing and/or executing program code will include at least one processor 1096 coupled directly or indirectly to memory elements 1092 through a system bus 1020. The memory elements 1092 can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices 1040 (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly to the system or through intervening I/O controllers.
Network adapters 1050 may also be coupled to the system to enable the system to become coupled to other data processing systems 1052, remote printers 1054 or storage devices 1056 through intervening private or public networks 1060. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
Accordingly, the computer program 1090 comprise instructions which, when read and executed by the system 1000 of
The foregoing description of the embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather by the claims appended hereto.