The present disclosure relates generally to data encryption, and more specifically to encrypting variable-length passwords to yield fixed-length encrypted passwords.
Encryption is the process of transforming information to make the information unreadable to anyone except those possessing an encryption key. The result of the process is encrypted information.
According to one embodiment, encrypting passwords includes performing the following for each input password of a plurality of input passwords to yield encrypted passwords, where at least two input passwords have different lengths and the encrypted passwords have the same length. An input password and a random number are received at logic configured to perform a key derivation operation comprising a pseudorandom function. An encryption key is derived from the input password and the random number according to the key derivation operation. The encryption key and a user identifier are received at logic configured to perform a cipher-based message authentication code (CMAC) function. An encrypted password is generated from the encryption key and the user identifier according to the CMAC function.
Certain embodiments of the invention may provide one or more technical advantages. A technical advantage of one embodiment may be that encrypted passwords of the same length (fixed-length passwords) may be generated from input passwords of different lengths. Fixed-length passwords may simplify storage space allocation because the total amount of storage space required for the passwords may be readily calculated. Another technical advantage of one embodiment may be that an encryption key is derived from an input password and a random number. Deriving the encryption key from the random number, in addition to the input password, may yield an encryption key that is less susceptible to attack than an encryption key derived from just the input password. Another technical advantage of one embodiment may be that the random number used to derive the encryption key may be recorded. If the input password is received a second time, the same encryption key may be derived again from the recorded random number and the received input password. Since the encryption key can be generated again, it need not be stored and can be deleted after generated.
Certain embodiments of the invention may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein.
For a more complete understanding of certain embodiments of the present invention and features and advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings, in which:
Embodiments of the present invention and its advantages are best understood by referring to
In certain embodiments, system 10 may encrypt input passwords to yield encrypted passwords in order to provide an added level of security. Input passwords may be used to authenticate and/or authorize a user, but alone may not provide a sufficient level of protection. For example, an input password may be selected by the user and may therefore contain common words, common phrases, and/or repeated characters. This type of input password may be vulnerable to dictionary attacks in which an unauthorized user enters a series of common password combinations to guess the input password by trial and error. Encrypting input passwords may provide more security than user-generated input passwords.
In certain embodiments, system 10 may include an interface 20, logic 22, memory 24, and/or other suitable element. Interface 20 receives input, sends output, processes the input and/or output, and/or performs other suitable operation. In certain embodiments, interface 20 receives an input password, a random number, and/or a user identifier and outputs an encrypted password. Interface 20 may comprise hardware and/or software.
Logic 22 performs the operations of the component, for example, executes instructions to generate output from input. In certain embodiments, logic 22 may derive an encryption key from the input password and the random number according to a key derivation operation that includes a pseudorandom function. Deriving the encryption key from the random number, in addition to the input password, may yield an encryption key that is less susceptible to attack than an encryption key derived from just the input password. Logic 22 may generate an encrypted password from the encryption key and a user identifier according to a cipher-based message authentication code (CMAC) function.
Logic 22 may include hardware (such as a processor 30), software (such as applications 34), and/or other logic. Logic 22 may be encoded in one or more tangible media and may perform operations when executed by a computer. Certain logic 22, such as a processor 30, may manage the operation of a component. Examples of a processor 30 include one or more computers, one or more microprocessors, one or more applications, and/or other logic.
In particular embodiments, the operations of the embodiments may be performed by one or more computer readable media encoded with a computer program, software, computer executable instructions, and/or instructions capable of being executed by a computer. In particular embodiments, the operations of the embodiments may be performed by one or more computer readable media storing, embodied with, and/or encoded with a computer program and/or having a stored and/or an encoded computer program.
Memory 24 stores information. Memory 24 may comprise one or more tangible, computer-readable, and/or computer-executable storage medium, and may exclude signals or carrier waves. Examples of memory include computer memory (for example, Random Access Memory (RAM) or Read Only Memory (ROM)), mass storage media (for example, a hard disk), removable storage media (for example, a Compact Disk (CD) or a Digital Video Disk (DVD)), database and/or network storage (for example, a server), and/or other computer-readable medium.
Modifications, additions, or omissions may be made to system 10 without departing from the scope of the invention. The components of system 10 may be integrated or separated. Moreover, the operations of system 10 may be performed by more, fewer, or other components. For example, the operations of deriving an encryption key and generating an encrypted password may be performed by one component or more than one component. Additionally, operations of system 10 may be performed using any suitable logic comprising software, hardware, and/or other logic. As used in this document, “each” refers to each member of a set or each member of a subset of a set.
A random number is received at step 114. The random number may be any suitable random number. For example, the random number may be the time of day that the encryption key is generated. The time of day may be expressed in any suitable manner, such as the eight byte binary representation of the current date and time value generated on a given machine. As another example, the random number may be a number generated according to a random number algorithm such as a hash function.
An encryption key is generated from the input password and the random number according to a key derivation operation at step 118. The key derivation operation may be any suitable function for generating an encryption key. For example, the key derivation operation may be a Password-Based Key Derivation Function (PBKDF) such as PBKDF2. The encryption key may have any suitable length. For example, the length of the encryption key may be a fixed length, such as sixteen bytes, or 128 bits.
The key derivation operation may generate the encryption key in any suitable manner. In certain embodiments, the key derivation operation first receives inputs such as an input password, a random number, and/or an iteration count. In some embodiments, the key derivation operation may use the random number as a salt value to select an encryption key from a set of keys corresponding to the input password.
In some embodiments, the random number may be recorded. If the input password is received a second time, the key derivation operation may be repeated to generate the same encryption key from the recorded random number and the received input password. Since the encryption key can be generated again, it need not be stored and can be deleted after generated.
The key derivation operation applies a pseudorandom function to generate the encryption key. For example, the pseudorandom function may be a Hash Message Authentication Code-Secure Hash Algorithm-1 (HMAC-SHA-1) function. The iteration count may indicate the number of times to iterate the pseudorandom function. Finally, the key derivation operation outputs the encryption key.
A user identifier is received at step 122. The user identifier may identify a user, such as a person, account, entity, or system. An encrypted password is generated from the encryption key and the user identifier according to a cipher-based message authentication code (CMAC) function at step 126. In some embodiments, the length of the encrypted password may be fixed. That is, the length of a first encrypted password generated for a first input password may be the same as the length of a second encrypted password generated for a second input password, even if the length of the first input password is not the same as the length of the second input password.
According to some embodiments, the CMAC function may use the encryption key to encrypt the user identifier to yield an encrypted password comprising a message authentication code (MAC). The CMAC function may be any suitable CMAC function, for example, an Advanced Encryption Standard (AES)-CMAC function.
The CMAC function may generate an encrypted password in any suitable manner. In some embodiments, the CMAC function generates subkeys and then uses the subkeys in a MAC generation algorithm to generate the encrypted password. In the embodiments, a subkey generation algorithm generates a first subkey K1 and a second subkey K2 from the encryption key.
To generate the subkeys, the subkey generation algorithm first determines the value of a variable L. For example, the value of L may be determined using an Advanced Encryption Standard (AES) algorithm, such as an AES-128 algorithm. The AES algorithm may determine the value of L from the encryption key and a zero constant comprising only one or more zeros. For AES-128, the encryption key and the zero constant may be 128 bits long.
The most significant bit of L may be used to determine first subkey K1. If the most significant bit of L is equal to zero, then K1 is the left-shift of L by one bit. Otherwise, K1 is the exclusive-OR of a constant_Rb and the left-shift of L by one bit. For example, the constant_Rb may be 0x00000000000000000000000000000087. The most significant bit of K1 may be used to determine K2. If the most significant bit of K1 is equal to zero, then K2 is the left-shift of K1 by one bit. Otherwise, K2 is the exclusive-OR of the constant_Rb and the left-shift of K1 by one bit.
A MAC generation algorithm may generate the encrypted password from the subkeys K1 and K2 in any suitable manner. In some embodiments, the MAC generation algorithm may be an AES-CMAC algorithm that accepts inputs comprising the encryption key, the user identifier, and the length of the user identifier in octets. In the embodiments, the user identifier may be divided into blocks of a specific block length, such as 128 bits. The last block may be shorter than the specific block length, that is, not a full length block. The number of blocks may be the smallest integer value greater than or equal to the quotient determined by dividing the length of the user identifier by the block length.
The last block may be transformed to make the user identifier the same length as the encryption key. If the last block is a full length block, the value may be calculated by exclusive-OR'ing the contents of the block with K1. If the last block is not a full length block, the value may be calculated by padding the contents up to a full block length and then exclusive-OR'ing the contents of the block with K2. The padding may comprise concatenating the contents of the block with a single ‘1’ followed by a minimum number of ‘0’s to yield a full length block.
A CBC-MAC algorithm generates an encrypted password from the user identifier, the number of blocks, the encryption key, and a variable comprising only one or more zeros. In some embodiments, the encrypted password may have the same length as that of the encryption key. In some embodiments, the encrypted password 170 may be truncated, for example, from sixteen bytes to eight bytes. In some embodiments, the result of truncation is taken in most significant bits first order. The encrypted password is reported at step 130.
Modifications, additions, or omissions may be made to the method without departing from the scope of the invention. The method may include more, fewer, or other steps. Additionally, steps may be performed in any suitable order.
Although this disclosure has been described in terms of certain embodiments, alterations and permutations of the embodiments will be apparent to those skilled in the art. Accordingly, the above description of the embodiments does not constrain this disclosure. Other changes, substitutions, and alterations are possible without departing from the spirit and scope of this disclosure, as defined by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
7343014 | Sovio et al. | Mar 2008 | B2 |
7552333 | Wheeler et al. | Jun 2009 | B2 |
20080104414 | Cheng et al. | May 2008 | A1 |
20080112561 | Kim et al. | May 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
20100239087 A1 | Sep 2010 | US |