US20050147252A1 - System and method for high speed reversible data encryption - Google Patents
System and method for high speed reversible data encryption Download PDFInfo
- Publication number
- US20050147252A1 US20050147252A1 US10/747,541 US74754103A US2005147252A1 US 20050147252 A1 US20050147252 A1 US 20050147252A1 US 74754103 A US74754103 A US 74754103A US 2005147252 A1 US2005147252 A1 US 2005147252A1
- Authority
- US
- United States
- Prior art keywords
- character
- data
- encryption key
- encrypted
- shifted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S40/00—Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
- Y04S40/20—Information technology specific aspects, e.g. CAD, simulation, modelling, system security
Definitions
- the present invention relates generally to data encryption and, more particularly, to high speed data encryption using character shifting and translation in the encryption key.
- test data instead of live data
- live data e.g., production data, financial services data, etc.
- live data e.g., actual customer data
- this breach affects auditors working on bank readiness for financial services companies when security, privacy, and the integrity of customer data are important.
- such a breach affects patients' rights of privacy and confidentiality of medical information at a time when new federal laws make protecting such information important.
- the present invention provides systems and methods for facilitating encryption and decryption of data.
- data and an encryption key having a number of characters are located or identified.
- An encryption key can be located if an encryption key is pre-selected or selected if an encryption key is not pre-selected.
- a check is made to determine whether the encryption key is pre-selected, and if the encryption key is not pre-selected, a default value is chosen.
- the system locates a character in the encryption key to establish a “located character”.
- the system also determines the number of characters in the data.
- the position of the located character in the encryption key is shifted by a predetermined amount in order to determine a “shifted position” of the located character in the encryption key.
- the shifted position is located at a position in the encryption key that is the located character shifted by the predetermined amount.
- the predetermined amount can be any amount.
- the first character in the data is translated with the character located at the shifted position in the encryption key to provide an encrypted character.
- the shifting and translating are repeated for any remaining characters in the data to provide encrypted data. Steps similar to the foregoing steps can also be used to decrypt encrypted data.
- FIG. 1 is a block diagram of a system for encryption and decryption in accordance with an exemplary embodiment of the present invention.
- FIG. 2 is a flowchart of a method for encryption and decryption in accordance with an exemplary embodiment of the present invention.
- Systems and methods in accordance with various aspects of the present invention facilitate encryption and decryption of data.
- the present invention is applicable to many diverse areas to facilitate data encryption and decryption (i.e., the encryption is reversible).
- a system and method are provided to facilitate high speed bi-directional encryption and decryption of data.
- the present invention can be used to encrypt and decrypt numerous and complex customer data (e.g., data files or records), underlying source data to validate logic, password or security data, employee data, patient data, merchant or vendor data, and the like.
- the present invention facilitates such testing without substantially compromising confidentiality. For example, if production data needs to be tested by an outside entity (without authorization to have access to all the data), the present invention facilitates restricted access to such data so that practical testing is possible. Oftentimes, actual production data is needed, instead of simulated production data. For example, testing software often uses actual production data in order to test the robustness of the software. If the production data includes data that is confidential, sensitive, or otherwise protected by privacy laws, the present invention facilitates an environment where such data can be accurately tested. In addition, if fraud or other illegal activity is a concern, the present invention can restrict access to data, which may be used for such activity. It will be understood that the present invention may be applied outside the context of the illustrated applications, but is illustrated as such for brevity. The present invention may be applied to any suitable context benefiting from encryption and decryption of data, and particularly high speed embodiments.
- the present invention is described herein in terms of functional block components and various processing steps.
- the present invention may be embodied as a method, a data processing system, a device for data processing, and/or a computer program product. It should be appreciated that such functional blocks may be realized by any number of hardware and/or software components configured to perform the specified functions. Accordingly, aspects of the present invention may take the form of an entirely software embodiment, an entirely hardware embodiment, or an embodiment combining aspects of both software and hardware.
- the present invention may take the form of a computer program product on a computer-readable storage medium having computer-readable program code means embodied in the storage medium.
- Any suitable computer-readable storage medium may be utilized, including hard disks, CD-ROM, optical storage devices, magnetic storage devices, and/or the like.
- the present invention may employ various integrated circuit components, e.g., memory elements, processing elements, logic elements, look-up tables, and/or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices.
- the software elements of the present invention may be implemented with any programming or scripting language such as C, C++, JAVATM, COBOL, OBJECT REXXTM, assembler, PERL, eXtensible Markup Language (XML), or the like, with the various algorithms being implemented on various platforms (e.g., OS/390, z/OS, SUNTM SOLARISTM, MICROSOFTTM WINDOWSTM, UNIX, and the like) with any combination of data structures, objects, processes, routines, or other programming elements.
- the present invention may employ any number of conventional techniques for data transmission, signaling, data processing, network control, and the like.
- FIG. 1 is a block diagram of a system 100 for encryption and decryption in accordance with an exemplary embodiment of the present invention.
- System 100 includes, in one embodiment, a computer system 101 and one or more databases 115 , which may be configured to communicate through one or more communication channels 117 .
- Computer system 101 may include a driver process 103 coupled to an encryption routine 105 , where encryption routine 105 may include one or more modules 107 , 109 , 111 , and 113 for encrypting and decrypting data. It is understood that encryption routine 105 may be used for both encryption and decryption of data, but is termed as such for simplicity.
- System 100 may include a server or other computing system, including a processor for processing digital data, a memory coupled to the processor for storing digital data, an input digitizer coupled to the processor for inputting digital data, an application program stored in the memory and accessible by the processor for directing the processing of digital data by the processor, a display coupled to the processor and memory for displaying information derived from digital data processed by the processor and a plurality of databases, the databases including client data, merchant data, financial institution data and/or like data that could be used in association with the present invention.
- a server or other computing system including a processor for processing digital data, a memory coupled to the processor for storing digital data, an input digitizer coupled to the processor for inputting digital data, an application program stored in the memory and accessible by the processor for directing the processing of digital data by the processor, a display coupled to the processor and memory for displaying information derived from digital data processed by the processor and a plurality of databases, the databases including client data, merchant data, financial institution data and/or like data that could be used in association with the
- Computer system 101 can be any computing unit, server, mainframe, or the like.
- Computer system 101 includes any hardware and/or software suitably configured to store information, run complex routines and logic, and interact with the other components of system 100 .
- system 100 may include any number of computer systems 101 in communication with any number of databases 115 through any number of communication channels 117 .
- computer system 101 and database 115 are separate systems, which may be located in one location or remotely located from one another.
- database 115 may be integrated within computer system 101 .
- an integrated system may be components of a single computing device (e.g., separate modules of a single computing unit) or may be separate components of an integrated computing system, wherein computer system 101 and database 115 components of the computing system communicate with each other via a network that is separate from communication channels 117 .
- Each participant or user of system 100 may be equipped with a suitable computing system to facilitate communications and transactions with any other participant.
- a suitable computing system to facilitate communications and transactions with any other participant.
- some or all participants may have access to a computing unit in the form of a personal computer, although other types of computing units may be used, including laptops, notebooks, handheld computers (e.g., a Palm Pilot®), set-top boxes, kiosk terminals, personal digital assistants, cellular phones, and the like.
- participant's computing system may include any suitable operating system, such as any version of WINDOWSTM, WINDOWS NTTM, WINDOWS 2000TM, WINDOWS 98, WINDOWS 95TM, MacOS, OS/2, OS/390, BeOS, Linux, UNIX, or the like.
- IPX Internetwork Packet Exchange
- APPLETALK Internet Engineering Task Force
- IP-6 Internet Engineering Task Force
- NetBIOS Network Basic Input/Output System
- OSI Open Systems Interconnection
- the system contemplates the use, sale, or distribution of any goods, services, or information over any network having functionality similar to that described herein.
- One or more databases 115 and any other data storage devices referred to herein may include any type of hardware and/or software device, which is configured to store and maintain data.
- Exemplary devices include any suitable type of database, such as relational, hierarchical, object-oriented, and/or the like.
- Common database products that may be used to implement databases 115 and any other data storage devices referred to herein include DB2 by IBM (White Plains, N.Y.), any of the database products available from Oracle Corporation (Redwood Shores, Calif.), MICROSOFT ACCESSTM by Microsoft Corporation (Redmond, Wash.), or any other database product.
- One or more databases 115 and any other data storage devices referred to herein may be organized in any suitable manner including as data tables or lookup tables.
- Association of certain data may be accomplished through any data association technique known and practiced in the art.
- the association may be accomplished either manually or automatically.
- Automatic association techniques may include, for example, a database search, a database merge, GREP, AGREP, SQL, and/or the like.
- the association step may be accomplished by a database merge function, for example, using a “key field” in each of the data tables.
- a “key field” partitions the database according to the high-level class of objects defined by the key field. For example, a certain class may be designated as a key field in both the first data table and the second data table, and the two data tables may then be merged on the basis of the class data in the key field.
- computer system 101 and database 115 may be suitably coupled to communication channels 117 via data links.
- a variety of conventional communications media and protocols may be used for data links, such as a connection to an Internet Service Provider (ISP) over a local loop, as is typically associated with standard modem communication, cable modem, Dish networks, ISDN (Integrated Services Digital Network), DSL (Digital Subscriber Line), or various wireless communication methods.
- Computer system 101 and database 115 may each also reside within a LAN (Local Area Network), which interfaces to network 120 via a leased line (e.g., T1, D3, and/or the like).
- LAN Local Area Network
- Communication between participants in system 100 is accomplished through any suitable communication channel (e.g., communication channel 117 ), such as, for example, a telephone network, public switch telephone network, intranet, Internet, extranet, WAN (Wide Area Network), LAN, point of interaction device (e.g., point of sale device, personal digital assistant, cellular phone, kiosk terminal, automated teller machine (ATM), and/or the like), online communications, off-line communications, wireless communications, satellite communications, and/or the like.
- the network may also be implemented as other types of networks, such as an interactive television (ITV) network.
- ITV interactive television
- any databases, systems, or components of the present invention may consist of any combination of databases or components at a single location or at multiple locations, wherein each database or system includes any of various suitable security features, such as firewalls, access codes, encryption, decryption, compression, decompression, and/or the like.
- the computing systems may be connected with each other via a data communications network.
- the network may be a public network, which is assumed to be insecure and open to eavesdroppers.
- the network is embodied as the Internet.
- the computers may or may not be connected to the Internet at all times.
- a user's computer may employ a modem to occasionally connect to the Internet, whereas a merchant computing system, a financial services company computing system, and/or a healthcare oriented company system's computing system might maintain a permanent connection to the Internet.
- Specific information related to the protocols, standards, and application software utilized associated with the Internet are not discussed herein.
- the computer systems may also be interconnected to a card issuer via a second network, referred to as a payment network.
- the payment network represents existing proprietary networks that presently accommodate transactions for credit cards, debit cards, and other types of financial instruments or banking cards.
- the payment network is a closed network that is assumed to be secure from eavesdroppers. Examples of the payment network include the AMERICAN EXPRESS®, VISANET®, and VERIPHONE® networks.
- computer system 101 communicates with database 115 via driver process 103 .
- Computer system 101 locates an encryption key 119 having a number of characters.
- Encryption key 119 may be stored in database 115 (as illustrated), computer system 101 , or otherwise provided to computer system 101 or system 100 .
- Encryption key 119 may be pre-selected by the user (not shown) of system 100 , or if encryption key 119 is not pre-selected, computer system 101 may select an encryption key (e.g., a default value). The default value can be any value.
- Encryption key 119 can be secret and unique to each user, so that other users of system 100 cannot encrypt and decrypt using another's unique encryption key 119 .
- a character in encryption key 119 is located to provide a located character.
- the located character may be a first alpha character, a first numeric character, a special character, a Kth character (K being an integer) in encryption key 119 , or any other character, which may be chosen by system 100 , computer system 101 , database 115 , or the user.
- the position or location of the located character in encryption key 119 is represented by the term cf.
- the data is parsed into a set of characters C (or N) that are available to be encrypted.
- the sequence of the characters in set C (or N) can be in any order and can act as the encryption key 119 for encryption routine 105 .
- Character sets C and N can be separate or combined as one character set. Much of the description may be illustrated using character set C; however, such description is also applicable to set N, but not described for brevity.
- the user (not shown) of system 100 can select the characters in set C (or N) as encryption key 119 . However, if no set C (or N) of characters is specified by the user, a default character set C (or N) is selected by encryption routine 105 as encryption key 119 .
- Driver process 103 reads data from database 115 and accesses encryption routine 105 to parse the data to determine which parts (or all parts) of the data is to be encrypted.
- driver process 103 can encode one or more fields of data in one or more customer records in database 115 .
- the data can be parsed into a plurality of strings of data in order to determine which string of data is to be encrypted.
- driver process 103 calls encryption routine 105 once for each character of data in the field.
- the number of characters (L or 1) in the data is determined, where L can be any number of characters including zero.
- the data can take any form depending on the context in which system 100 is implemented.
- the data in database 115 may be customer data (e.g., customer records including customer identification, financial, and security information).
- customer data e.g., customer records including customer identification, financial, and security information
- patient data e.g., patient records including patient identification, financial, medical, and other information.
- Encryption routine 105 can be configured to parse the data depending on the needs of system 100 , so that data ready to be encrypted is identified.
- encryption routine 105 can be called from any driver process 103 which are, for example, written in the COBOL (Common Business Oriented Language) or OBJECT REXXTM languages.
- Encryption routine 105 is configured to encrypt and decrypt any data with any field length, where the field length is a number of characters L (e.g., 50 bytes).
- L e.g. 50 bytes.
- the position of the located character in encryption key 119 is shifted by a predetermined amount to determine a shifted position of the located character in encryption key 119 .
- the shifted position of the located character is located at a position in encryption key 119 that is the located character shifted by the predetermined amount.
- the predetermined amount includes at least one of, for example: an amount relative to the number of characters (L) in the data, an amount equal to the number of characters (L) in the data minus one, an amount equal to a multiple of the location of the located character c f , a calculated amount, an amount chosen by the user or system 100 , and/or the like.
- the first character in the data is translated with the character located at the shifted position to provide an encrypted character.
- the character set C may be shifted by ⁇ .
- This shifting of character set C is illustrated by C ⁇ , which is the character set C shifted by ⁇ characters to the right (or left).
- C ⁇ is the character set C shifted by ⁇ characters to the right (or left).
- the characters on the extreme right of character set C are wrapped around to the left.
- the encrypted data may be decrypted using system 100 in a manner similar to the encryption of data described herein.
- encryption key 119 is located having a number of characters.
- a character in encryption key 119 is located to provide a located character.
- the number of characters in the encrypted data (e.g., encrypted string E) is determined.
- the position of the located character in encryption key 119 is shifted by a predetermined amount to determine a shifted position of the located character in encryption key 119 . Accordingly, the shifted position is located at a position in encryption key 119 that is the located character shifted by the predetermined amount.
- the first character in the data (e.g., encrypted string E) is translated with the character located at the shifted position in encryption key 119 to provide an encrypted character.
- the shifting and translating steps may be repeated for any remaining characters in the encrypted data (e.g., encrypted string E) in order to provide decrypted data (e.g., string of characters S).
- system 100 facilitates high speed bi-directional (or reversible) data encryption and decryption. Since encryption routine 105 uses less complex calculations (instead of complex calculations often used in encryption/decryption), system 100 is higher speed, so that it can encrypt and decrypt volumes and volumes of data quickly. For example, system 100 is useful in mainframe systems having voluminous data files for encryption and decryption. System 100 is bi-directional (or reversible) in that encryption routine 105 can encrypt and decrypt data. Therefore, system 100 facilitates secure encryption and decryption of data, so that users can more freely use sensitive data without substantially compromising confidentiality.
- FIG. 2 is a flowchart of a method for encryption and decryption (e.g., within system 100 of FIG. 1 ) in accordance with an exemplary embodiment of the present invention.
- FIG. 2 illustrates a series of method steps, it will be realized that the order of particular steps may be altered and/or other steps may be omitted altogether while still attaining the same or a similar result. It will be understood that the detailed description of FIG. 1 can operate and apply to the method steps in FIG. 2 , so that some of the detail from FIG. 1 is not repeated in the discussion of FIG. 2 for brevity.
- data and an encryption key 119 having a number of characters are located or identified (step 201 ).
- a check is made to determine whether encryption key 119 is blank (e.g., pre-selected or not) (step 203 ). If encryption key 119 is not pre-selected (i.e., blank), then a default encryption key 119 is used by system 100 (step 205 ). If encryption key 119 is pre-selected (i.e., not blank), then a further check is made to determine whether encryption key 119 is different from the last stacked (or used) encryption key 119 (step 207 ).
- a character in encryption key 119 is located to provide a “located character.”
- a first numeric character may be located in encryption key 119 , if a numeric character is present in encryption key 119 .
- character c f is set to a pre-selected value (e.g., 1) (step 213 ). If a character is found (in step 211 ), then encryption key 119 and character c f are stored in computer system 101 (step 215 ). If the previous check determined that encryption key 119 is the last stacked (or used) (step 208 ), then encryption key 119 and character c f are stored in computer system 101 (step 215 ).
- a pre-selected value e.g. 1, 1
- the shifted position is located at a position in encryption key 119 that is the located character shifted by the predetermined amount.
- a check is made to determine whether Si is in character set C (step 227 ) or numeric set N (step 229 ).
- FIG. 2 illustrates a method for facilitating encryption and decryption of data in accordance with an exemplary embodiment of the present invention.
- an example of encrypting the data “ABC 123” and electing to choose the first alpha character as the located character is as follows:
- the 9 is the position of the lowest alpha character present in set C (where set C is encryption key 119 in this example).
- the 1 is because it is the first character of the data “ABC 123” to be encrypted.
- the second character in the data “ABC 123” is encrypted as follows:
- the first numeric character encryption is as follows:
- the shifting and translating steps may be repeated for any remaining characters in the data in order to provide encrypted data.
- encryption of the following data and the encrypted data are illustrated as follows: Data (S) Encrypted Data (E) FEDERAL EXPRESS GL#SKKR XRZFUAR AMERICAN EXPRESS IUQAIJ*Q N@R$FS@ SCOTTSDALE UNIFIED VDMTPMJPOW V#IEJH$ GPZMOU SCHOOL 13246 N.124 TH WAY 1 + 753 X8853 FS XED JOHN SMITH AGBE VSDT# 938102 8956789 589-63 1-30.74 ABC CORP Y*O XK@X ABCD CORP H@KZ N*ZN
- the underlying or original string S (s 1 ,s 2 ,s 3 , . . . . s L ) is derived as follows:
- the character set C (or N) can be sequenced differently for different data (e.g., different customer records or files) and be configured as a key or password for the data. If character set C (or N) is configured as a key or password, it can be sent separately to the user of system 100 (where it can be decrypted by encryption routine 105 along with encryption key 119 ). Such a key or password provides further security to protecting sensitive information and makes unauthorized decryption of data even more difficult.
- FIGS. 1 and 2 illustrate a system and method for encryption and decryption of data in accordance with exemplary embodiments of the present invention.
- These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart block or blocks.
- the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
- the terms “user” and “participant” may interchangeably include any person, entity, charitable organization, machine, hardware, software, or business who accesses and uses the system of the invention, including purchasers, merchants, card issuers, financial services companies, healthcare oriented companies (e.g., hospitals, health maintenance organizations, medical offices, and the like), and other systems requiring confidentiality, privacy of information, and protection of related rights. Participants in the system may interact with one another either online or off-line. It is further noted that other participants may be involved in various embodiments of the invention, such as an intermediary settlement institution, though these participants are not always described in detail.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
- The present invention relates generally to data encryption and, more particularly, to high speed data encryption using character shifting and translation in the encryption key.
- As business processes are becoming increasingly complex, the underlying software implementing the business processes is often becoming more difficult to test. One of the challenges in the testing process is the creation of live test conditions to validate the business related performance of the software in a real world situation. Moreover, artificially generated test data often fails to simulate live production conditions in terms of volume and complexity.
- Software developers and business users attempt to circumvent the drawback of using test data (instead of live data) by copying the live data (e.g., production data, financial services data, etc.) to the test environment. Copying the live data allows for testing the software under real world conditions without substantially disrupting the business process. However, using live data (e.g., actual customer data) can create security and privacy breaches. Specifically, the live customer data is exposed to several users on a routine basis and the customer may not have provided certain users with permission to have access to such data. In the financial services industry, for example, this breach affects auditors working on bank readiness for financial services companies when security, privacy, and the integrity of customer data are important. In the healthcare industry, for example, such a breach affects patients' rights of privacy and confidentiality of medical information at a time when new federal laws make protecting such information important.
- Furthermore, some existing encryption schemes use complex calculations which are time-consuming to perform (e.g., modulus operation), or inaccurate methods which are often unreliable (e.g., mapping dictionary words). In view of the foregoing, a need exists for systems and methods which facilitate encrypting data (e.g., information), so that unauthorized users can access only parts of the data. Moreover, a need exists for a high speed encryption routine for large and numerous customer files, including robust encryption that is quickly reversible.
- The present invention provides systems and methods for facilitating encryption and decryption of data. In accordance with an exemplary embodiment of the present invention, data and an encryption key having a number of characters are located or identified. An encryption key can be located if an encryption key is pre-selected or selected if an encryption key is not pre-selected. A check is made to determine whether the encryption key is pre-selected, and if the encryption key is not pre-selected, a default value is chosen. The system locates a character in the encryption key to establish a “located character”. The system also determines the number of characters in the data. The position of the located character in the encryption key is shifted by a predetermined amount in order to determine a “shifted position” of the located character in the encryption key. Accordingly, the shifted position is located at a position in the encryption key that is the located character shifted by the predetermined amount. The predetermined amount can be any amount. The first character in the data is translated with the character located at the shifted position in the encryption key to provide an encrypted character. The shifting and translating are repeated for any remaining characters in the data to provide encrypted data. Steps similar to the foregoing steps can also be used to decrypt encrypted data.
- Additional aspects of the present invention will become evident upon reviewing the non-limiting embodiments described in the specification and the claims taken in conjunction with the accompanying figures, wherein like numerals designate like elements, and wherein:
-
FIG. 1 is a block diagram of a system for encryption and decryption in accordance with an exemplary embodiment of the present invention; and -
FIG. 2 is a flowchart of a method for encryption and decryption in accordance with an exemplary embodiment of the present invention. - The following disclosure presents and describes various exemplary embodiments in sufficient detail to enable those skilled in the art to practice the invention, and it should be understood that other embodiments may be realized without departing from the spirit and scope of the invention. Thus, the following detailed description is presented for purposes of illustration only and not of limitation.
- Systems and methods in accordance with various aspects of the present invention facilitate encryption and decryption of data. The present invention is applicable to many diverse areas to facilitate data encryption and decryption (i.e., the encryption is reversible). In an exemplary embodiment of the present invention, a system and method are provided to facilitate high speed bi-directional encryption and decryption of data. For example, the present invention can be used to encrypt and decrypt numerous and complex customer data (e.g., data files or records), underlying source data to validate logic, password or security data, employee data, patient data, merchant or vendor data, and the like.
- If sensitive or confidential data needs to be tested or otherwise used, the present invention facilitates such testing without substantially compromising confidentiality. For example, if production data needs to be tested by an outside entity (without authorization to have access to all the data), the present invention facilitates restricted access to such data so that practical testing is possible. Oftentimes, actual production data is needed, instead of simulated production data. For example, testing software often uses actual production data in order to test the robustness of the software. If the production data includes data that is confidential, sensitive, or otherwise protected by privacy laws, the present invention facilitates an environment where such data can be accurately tested. In addition, if fraud or other illegal activity is a concern, the present invention can restrict access to data, which may be used for such activity. It will be understood that the present invention may be applied outside the context of the illustrated applications, but is illustrated as such for brevity. The present invention may be applied to any suitable context benefiting from encryption and decryption of data, and particularly high speed embodiments.
- The particular implementations shown and described herein are illustrative of the invention and its best mode and are not intended to otherwise limit the scope of the present invention in any way. Furthermore, the connecting lines shown in the various figures contained herein are intended to represent exemplary functional relationships and/or physical couplings between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may be present in a practical implementation of the invention.
- The present invention is described herein in terms of functional block components and various processing steps. As will be appreciated, the present invention may be embodied as a method, a data processing system, a device for data processing, and/or a computer program product. It should be appreciated that such functional blocks may be realized by any number of hardware and/or software components configured to perform the specified functions. Accordingly, aspects of the present invention may take the form of an entirely software embodiment, an entirely hardware embodiment, or an embodiment combining aspects of both software and hardware. Furthermore, the present invention may take the form of a computer program product on a computer-readable storage medium having computer-readable program code means embodied in the storage medium. Any suitable computer-readable storage medium may be utilized, including hard disks, CD-ROM, optical storage devices, magnetic storage devices, and/or the like. For example, the present invention may employ various integrated circuit components, e.g., memory elements, processing elements, logic elements, look-up tables, and/or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices. Similarly, the software elements of the present invention may be implemented with any programming or scripting language such as C, C++, JAVA™, COBOL, OBJECT REXX™, assembler, PERL, eXtensible Markup Language (XML), or the like, with the various algorithms being implemented on various platforms (e.g., OS/390, z/OS, SUN™ SOLARIS™, MICROSOFT™ WINDOWS™, UNIX, and the like) with any combination of data structures, objects, processes, routines, or other programming elements. Further, it should be noted that the present invention may employ any number of conventional techniques for data transmission, signaling, data processing, network control, and the like.
-
FIG. 1 is a block diagram of asystem 100 for encryption and decryption in accordance with an exemplary embodiment of the present invention.System 100 includes, in one embodiment, acomputer system 101 and one ormore databases 115, which may be configured to communicate through one ormore communication channels 117.Computer system 101 may include adriver process 103 coupled to anencryption routine 105, whereencryption routine 105 may include one ormore modules encryption routine 105 may be used for both encryption and decryption of data, but is termed as such for simplicity. -
System 100, as well as any of its component systems, may include a server or other computing system, including a processor for processing digital data, a memory coupled to the processor for storing digital data, an input digitizer coupled to the processor for inputting digital data, an application program stored in the memory and accessible by the processor for directing the processing of digital data by the processor, a display coupled to the processor and memory for displaying information derived from digital data processed by the processor and a plurality of databases, the databases including client data, merchant data, financial institution data and/or like data that could be used in association with the present invention. -
Computer system 101 can be any computing unit, server, mainframe, or the like.Computer system 101 includes any hardware and/or software suitably configured to store information, run complex routines and logic, and interact with the other components ofsystem 100. Although only onecomputer system 101 is illustrated inFIG. 1 , it will be appreciated thatsystem 100 may include any number ofcomputer systems 101 in communication with any number ofdatabases 115 through any number ofcommunication channels 117. In the exemplary embodiment,computer system 101 anddatabase 115 are separate systems, which may be located in one location or remotely located from one another. In an alternate embodiment,database 115 may be integrated withincomputer system 101. In such an embodiment, an integrated system may be components of a single computing device (e.g., separate modules of a single computing unit) or may be separate components of an integrated computing system, whereincomputer system 101 anddatabase 115 components of the computing system communicate with each other via a network that is separate fromcommunication channels 117. - Each participant or user of
system 100, including customers, purchasers, merchants, card issuers, financial services companies, healthcare oriented companies, and third-parties, for example, may be equipped with a suitable computing system to facilitate communications and transactions with any other participant. For example, some or all participants may have access to a computing unit in the form of a personal computer, although other types of computing units may be used, including laptops, notebooks, handheld computers (e.g., a Palm Pilot®), set-top boxes, kiosk terminals, personal digital assistants, cellular phones, and the like. Additionally, participants may have computing systems which may be implemented in the form of a computer server, PC server, workstation, minicomputer, mainframe, a networked set of computers, or any other suitable implementations which are known in the art or may hereafter be devised. A participant's computing system may include any suitable operating system, such as any version of WINDOWS™, WINDOWS NT™, WINDOWS 2000™, WINDOWS 98, WINDOWS 95™, MacOS, OS/2, OS/390, BeOS, Linux, UNIX, or the like. Further, although the invention may be described herein as being implemented with TCP/IP communications protocols, it will be readily understood that the invention could also be implemented using IPX (Internetwork Packet Exchange), APPLETALK, IP-6, NetBIOS (Network Basic Input/Output System), OSI (Open Systems Interconnection), or any number of existing or future protocols. Moreover, the system contemplates the use, sale, or distribution of any goods, services, or information over any network having functionality similar to that described herein. - One or
more databases 115 and any other data storage devices referred to herein may include any type of hardware and/or software device, which is configured to store and maintain data. Exemplary devices include any suitable type of database, such as relational, hierarchical, object-oriented, and/or the like. Common database products that may be used to implementdatabases 115 and any other data storage devices referred to herein include DB2 by IBM (White Plains, N.Y.), any of the database products available from Oracle Corporation (Redwood Shores, Calif.), MICROSOFT ACCESS™ by Microsoft Corporation (Redmond, Wash.), or any other database product. One ormore databases 115 and any other data storage devices referred to herein may be organized in any suitable manner including as data tables or lookup tables. - Association of certain data may be accomplished through any data association technique known and practiced in the art. For example, the association may be accomplished either manually or automatically. Automatic association techniques may include, for example, a database search, a database merge, GREP, AGREP, SQL, and/or the like. The association step may be accomplished by a database merge function, for example, using a “key field” in each of the data tables. A “key field” partitions the database according to the high-level class of objects defined by the key field. For example, a certain class may be designated as a key field in both the first data table and the second data table, and the two data tables may then be merged on the basis of the class data in the key field.
- In an exemplary embodiment,
computer system 101 anddatabase 115 may be suitably coupled tocommunication channels 117 via data links. A variety of conventional communications media and protocols may be used for data links, such as a connection to an Internet Service Provider (ISP) over a local loop, as is typically associated with standard modem communication, cable modem, Dish networks, ISDN (Integrated Services Digital Network), DSL (Digital Subscriber Line), or various wireless communication methods.Computer system 101 anddatabase 115 may each also reside within a LAN (Local Area Network), which interfaces to network 120 via a leased line (e.g., T1, D3, and/or the like). Such communication methods are well known in the art and are covered in a variety of standard texts. See, e.g., Gilbert Held, Understanding Data Communications (1996), which is hereby incorporated by reference. - Communication between participants in
system 100 is accomplished through any suitable communication channel (e.g., communication channel 117), such as, for example, a telephone network, public switch telephone network, intranet, Internet, extranet, WAN (Wide Area Network), LAN, point of interaction device (e.g., point of sale device, personal digital assistant, cellular phone, kiosk terminal, automated teller machine (ATM), and/or the like), online communications, off-line communications, wireless communications, satellite communications, and/or the like. The network may also be implemented as other types of networks, such as an interactive television (ITV) network. It will appreciated that, for security reasons, any databases, systems, or components of the present invention may consist of any combination of databases or components at a single location or at multiple locations, wherein each database or system includes any of various suitable security features, such as firewalls, access codes, encryption, decryption, compression, decompression, and/or the like. - The computing systems may be connected with each other via a data communications network. For example, the network may be a public network, which is assumed to be insecure and open to eavesdroppers. In one embodiment, the network is embodied as the Internet. In this context, the computers may or may not be connected to the Internet at all times. For instance, a user's computer may employ a modem to occasionally connect to the Internet, whereas a merchant computing system, a financial services company computing system, and/or a healthcare oriented company system's computing system might maintain a permanent connection to the Internet. Specific information related to the protocols, standards, and application software utilized associated with the Internet are not discussed herein. For further information regarding such details, see, for example, Dilip Naik, Internet Standards and Protocols (1998); Java 2 Complete, various authors (Sybex 1999); Deborah Ray and Eric Ray, Mastering HTML 4.0 (1997); and Loshin, TCP/IP Clearly Explained (1997). Each of these texts is hereby incorporated by reference.
- The computer systems may also be interconnected to a card issuer via a second network, referred to as a payment network. The payment network represents existing proprietary networks that presently accommodate transactions for credit cards, debit cards, and other types of financial instruments or banking cards. The payment network is a closed network that is assumed to be secure from eavesdroppers. Examples of the payment network include the AMERICAN EXPRESS®, VISANET®, and VERIPHONE® networks.
- In one exemplary embodiment of the present invention,
computer system 101 communicates withdatabase 115 viadriver process 103.Computer system 101 locates anencryption key 119 having a number of characters.Encryption key 119 may be stored in database 115 (as illustrated),computer system 101, or otherwise provided tocomputer system 101 orsystem 100.Encryption key 119 may be pre-selected by the user (not shown) ofsystem 100, or ifencryption key 119 is not pre-selected,computer system 101 may select an encryption key (e.g., a default value). The default value can be any value.Encryption key 119 can be secret and unique to each user, so that other users ofsystem 100 cannot encrypt and decrypt using another'sunique encryption key 119. Of course, more than one user can use thesame encryption key 119, if desired; however,system 100 is configured to also support individual unique encryption keys for each user. Onceencryption key 119 is located, a character inencryption key 119 is located to provide a located character. The located character may be a first alpha character, a first numeric character, a special character, a Kth character (K being an integer) inencryption key 119, or any other character, which may be chosen bysystem 100,computer system 101,database 115, or the user. The position or location of the located character inencryption key 119 is represented by the term cf. - In one exemplary embodiment of the present invention, the data is parsed into a set of characters C (or N) that are available to be encrypted. The sequence of the characters in set C (or N) can be in any order and can act as the
encryption key 119 forencryption routine 105. In addition, the sequence of the characters in set C (or N) can be the data available to be encrypted. For example, C=(c1,c2,c3,c4 . . . ,cn), a character set where n is any integer, or N=(n1,n2,n3,n4, . . . ,nm), a numeric set where m is any integer. Character sets C and N can be separate or combined as one character set. Much of the description may be illustrated using character set C; however, such description is also applicable to set N, but not described for brevity. The user (not shown) ofsystem 100 can select the characters in set C (or N) asencryption key 119. However, if no set C (or N) of characters is specified by the user, a default character set C (or N) is selected byencryption routine 105 asencryption key 119. - If a character is missing from set C (e.g., the character “B”), then if
encryption routine 105 is presented with a B to encrypt, then the character B would not be encrypted. Instead, the character B would not be changed, and the same character B would be used without encryption as though this character were encrypted. This allows for characters not otherwise included in set C (e.g., the character “$”) to be retained even during encryption (and subsequent decryption). -
Driver process 103 reads data fromdatabase 115 and accessesencryption routine 105 to parse the data to determine which parts (or all parts) of the data is to be encrypted. For example,driver process 103 can encode one or more fields of data in one or more customer records indatabase 115. The data can be parsed into a plurality of strings of data in order to determine which string of data is to be encrypted. For each customer record, for example,driver process 103 callsencryption routine 105 once for each character of data in the field. The number of characters (L or 1) in the data is determined, where L can be any number of characters including zero. - The data can take any form depending on the context in which
system 100 is implemented. For example, ifsystem 100 is implemented to encrypt data for one or more financial services companies, then the data indatabase 115 may be customer data (e.g., customer records including customer identification, financial, and security information). Ifsystem 100 is implemented to encrypt data for one or more healthcare related companies, then the data indatabase 115 may be patient data (e.g., patient records including patient identification, financial, medical, and other information). In either such embodiments or others, it would be desirable to encrypt at least some of the data (e.g., social security number, financial account information, passwords, patient identification information, patient medical history, and the like).Encryption routine 105 can be configured to parse the data depending on the needs ofsystem 100, so that data ready to be encrypted is identified. - In one exemplary embodiment of the present invention,
encryption routine 105 can be called from anydriver process 103 which are, for example, written in the COBOL (Common Business Oriented Language) or OBJECT REXX™ languages.Encryption routine 105 is configured to encrypt and decrypt any data with any field length, where the field length is a number of characters L (e.g., 50 bytes). Once the number of characters (L or 1) in the data is determined, the position of the located character inencryption key 119 is shifted by a predetermined amount to determine a shifted position of the located character inencryption key 119. The shifted position of the located character is located at a position inencryption key 119 that is the located character shifted by the predetermined amount. The predetermined amount includes at least one of, for example: an amount relative to the number of characters (L) in the data, an amount equal to the number of characters (L) in the data minus one, an amount equal to a multiple of the location of the located character cf, a calculated amount, an amount chosen by the user orsystem 100, and/or the like. - Once the shifted position of the located character is determined, the first character in the data is translated with the character located at the shifted position to provide an encrypted character. In this manner, the character set C may be shifted by ∝. This shifting of character set C is illustrated by C→∝, which is the character set C shifted by ∝ characters to the right (or left). For example, the characters on the extreme right of character set C are wrapped around to the left. When oc is larger than the size of set C, it is possible this wrap around may complete one or more full rotations of character set C. Accordingly, C→∝=(c∝,c∝+1,c∝+2, . . . , cn-1, cn,c1,c2, . . . c∝-1).
- The translation of the first character in the data with the character located at the shifted position to provide an encrypted character is represented by (ci, C→∝C)=c(∝+i-1). This function translates the located character found in the set of characters C with the character (at a relative position) in character set C→∝. For example, in accordance with one exemplary embodiment of the present invention, if S is a string of characters of length L=1 to be encrypted, each character is encrypted as follows:
-
- S=string of characters=(s1,s2,s3, . . . s1)
- E=encrypted string of S=(e1,e2,e3, . . . e1)
- FOR i=1 to I
{ If si is a character in set C then ei = translate (si, C → cf*i + 1, C) else If si is a character in set N then ei = translate (si, N → cf*i + 1, N) else no translation of character } - The encrypted data may be decrypted using
system 100 in a manner similar to the encryption of data described herein. For example,encryption key 119 is located having a number of characters. A character inencryption key 119 is located to provide a located character. The number of characters in the encrypted data (e.g., encrypted string E) is determined. The position of the located character inencryption key 119 is shifted by a predetermined amount to determine a shifted position of the located character inencryption key 119. Accordingly, the shifted position is located at a position inencryption key 119 that is the located character shifted by the predetermined amount. The first character in the data (e.g., encrypted string E) is translated with the character located at the shifted position inencryption key 119 to provide an encrypted character. The shifting and translating steps may be repeated for any remaining characters in the encrypted data (e.g., encrypted string E) in order to provide decrypted data (e.g., string of characters S). - Thus, in accordance with various exemplary embodiments of the present invention,
system 100 facilitates high speed bi-directional (or reversible) data encryption and decryption. Sinceencryption routine 105 uses less complex calculations (instead of complex calculations often used in encryption/decryption),system 100 is higher speed, so that it can encrypt and decrypt volumes and volumes of data quickly. For example,system 100 is useful in mainframe systems having voluminous data files for encryption and decryption.System 100 is bi-directional (or reversible) in thatencryption routine 105 can encrypt and decrypt data. Therefore,system 100 facilitates secure encryption and decryption of data, so that users can more freely use sensitive data without substantially compromising confidentiality. -
FIG. 2 is a flowchart of a method for encryption and decryption (e.g., withinsystem 100 ofFIG. 1 ) in accordance with an exemplary embodiment of the present invention. AlthoughFIG. 2 illustrates a series of method steps, it will be realized that the order of particular steps may be altered and/or other steps may be omitted altogether while still attaining the same or a similar result. It will be understood that the detailed description ofFIG. 1 can operate and apply to the method steps inFIG. 2 , so that some of the detail fromFIG. 1 is not repeated in the discussion ofFIG. 2 for brevity. - In accordance with an exemplary embodiment of the present invention, data and an
encryption key 119 having a number of characters are located or identified (step 201). A check is made to determine whetherencryption key 119 is blank (e.g., pre-selected or not) (step 203). Ifencryption key 119 is not pre-selected (i.e., blank), then adefault encryption key 119 is used by system 100 (step 205). Ifencryption key 119 is pre-selected (i.e., not blank), then a further check is made to determine whetherencryption key 119 is different from the last stacked (or used) encryption key 119 (step 207). Ifencryption key 119 is different from the last stacked (or used)encryption key 119, then a character cf is located in encryption key 119 (step 209). Accordingly, a character inencryption key 119 is located to provide a “located character.” A check is also made to determine which character is found (e.g., a first alpha character) (step 211). For example, a first alpha character may be located inencryption key 119, if an alpha character is present inencryption key 119. A first numeric character may be located inencryption key 119, if a numeric character is present inencryption key 119. If a character is not found, then character cf is set to a pre-selected value (e.g., 1) (step 213). If a character is found (in step 211), thenencryption key 119 and character cf are stored in computer system 101 (step 215). If the previous check determined thatencryption key 119 is the last stacked (or used) (step 208), thenencryption key 119 and character cf are stored in computer system 101 (step 215). - The number of chracters (L) in the data (e.g., string of characters S=(s1,s2,s3, . . . s1)) are determined (step 217). Specifically, a counter i is set to 0 in order to begin at the beginning of the data (e.g., string of characters S) (step 219). A check is made to determine whether counter i is less than the number of characters L (step 221). If counter i is greater than or equal to the number of characters L, then the encrypted data E=(e1,e2,e3 . . . e1) is returned to computer system 101 (step 223). If counter i is less than the number of characters L, then counter i is incremented by 1 and the position of the located character in
encryption key 119 is shifted by, for example, ∝=cf*i+L−1 (i.e., a predetermined amount) in order to determine a shifted position of the located character in encryption key 119 (step 225). The shifted position is located at a position inencryption key 119 that is the located character shifted by the predetermined amount. A check is made to determine whether Si is in character set C (step 227) or numeric set N (step 229). - If Si is in character set C, then the first character in the data is translated with the character located at the shifted position to provide an encrypted character Ei=translate (Si, C→∝C) (step 231). If Si is in numeric set N, then the first character in the data is translated with the character located at the shifted position to provide an encrypted character Ei=translate (Si, N→∝, N) (step 233). If Si is not in character set C or numeric set N (e.g., a special character, such as ‘$’), then Ei=Si (i.e., the first character is not encrypted but still returned as part of the data being encrypted) (step 235). A check is made again to determine whether counter i is less than the number of characters L in order to determine whether all the data has been encrypted (step 221). If counter i is less than the number of characters L, then the remaining steps are repeated to further encrypt the data. If counter i is greater than or equal to the number of characters L, then the encrypted data E=(e1,e2,e3 . . . e1) is returned to computer system 101 (step 223). Similar steps as the steps in
FIG. 2 can also be used to decrypt encrypted data. Thus,FIG. 2 illustrates a method for facilitating encryption and decryption of data in accordance with an exemplary embodiment of the present invention. - With reference to
FIGS. 1 and 2 , and in accordance with one exemplary embodiment of the present invention, an example of encrypting the data “ABC 123” and electing to choose the first alpha character as the located character is as follows: -
- C=(L,B,I,X,#,T,M,Z,A,U,Q,C,G,N,P,O,K,R,S,F,J,V,W,D,Y,H,*,@,E,$), where C represents the set of alpha characters or
encryption key 119; - Cf=9 (the position of the lowest alpha character present, which is “A”);
- N=(0,1,2,3, . . . 9,.,−,+), where N represents a set of numeric characters;
- S=“ABC 123” (data to be encrypted); and
- 1 (or L)=7 (number of characters to be encrypted, which includes the space between ABC and 123 in this example).
- C=(L,B,I,X,#,T,M,Z,A,U,Q,C,G,N,P,O,K,R,S,F,J,V,W,D,Y,H,*,@,E,$), where C represents the set of alpha characters or
- In this example, the shifting of the position of the located character is as follows: cf*i+1 is shifted by 16 positions (9*1+7=16). The 9 is the position of the lowest alpha character present in set C (where set C is
encryption key 119 in this example). The 1 is because it is the first character of the data “ABC 123” to be encrypted. The 7 is derived from the total number of characters (L=7) to be encrypted. This example generates the shifted value of C to C→16, where encryption key 119 (C) is shifted by 16. Accordingly, in this example, C→16=(O,K,R, S,F,J,V,W,D,Y,H,*,@,E,$, L,B,I,X,#,T,M,Z,A,U,Q,C,G,N,P), so that e1=(‘A’, C→16, C)=‘D’. - The second character in the data “ABC 123” is encrypted as follows:
-
- cf*i+1 is the shifted position of the located character (9*2+7=25)
- C→25=(Y,H,*,@,E,$,L,B,I,X,#,T,M,Z,A,U,Q,C, G,N,P,O,K,R, S,F,J,V,W,D)
- e2=(‘B’, C→25, C)=‘H’
- In this example, the first numeric character encryption is as follows:
-
- cf*i+1 is the shifted position of the located character (9*5+7=52)
- N→52=(+,0,1,2,3,4,5,6,7,8,9,.,−)
- e5=(‘1’, N→52, N)=‘0’
- The shifting and translating steps may be repeated for any remaining characters in the data in order to provide encrypted data. In this example, the encrypted string E=DHP 0.7 is the result of encrypting the original data “ABC 123”.
- In this exemplary embodiment, encryption of the following data and the encrypted data are illustrated as follows:
Data (S) Encrypted Data (E) FEDERAL EXPRESS GL#SKKR XRZFUAR AMERICAN EXPRESS IUQAIJ*Q N@R$FS@ SCOTTSDALE UNIFIED VDMTPMJPOW V#IEJH$ GPZMOU SCHOOL 13246 N.124 TH WAY 1 + 753 X8853 FS XED JOHN SMITH AGBE VSDT# 938102 8956789 589-63 1-30.74 ABC CORP Y*O XK@X ABCD CORP H@KZ N*ZN - In one exemplary embodiment of the present invention, if the encrypted string is E=(e1,e2,e3 . . . e1), then the underlying or original string S=(s1,s2,s3, . . . . sL) is derived as follows:
- For i=1 to 1
{ If ei is a character in set C then si = translate (ei, C, C→cf *i + 1) else If ei is a character(digit) in set N then si= translate (ei, N, N→cf *i + 1) else no translation of character; } - The character set C (or N) can be sequenced differently for different data (e.g., different customer records or files) and be configured as a key or password for the data. If character set C (or N) is configured as a key or password, it can be sent separately to the user of system 100 (where it can be decrypted by
encryption routine 105 along with encryption key 119). Such a key or password provides further security to protecting sensitive information and makes unauthorized decryption of data even more difficult. Thus, these examples along withFIGS. 1 and 2 illustrate a system and method for encryption and decryption of data in accordance with exemplary embodiments of the present invention. - The present invention is described herein with reference to block diagrams and flowchart illustrations of methods, apparatus (e.g., systems), and computer program products according to various aspects of the invention. It will be understood that each functional block of the block diagrams and the flowchart illustrations, and combinations of functional blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process, such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
- Accordingly, functional blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions, and program instruction means for performing the specified functions. It will also be understood that each functional block of the block diagrams and flowchart illustrations, and combinations of functional blocks in the block diagrams and flowchart illustrations, can be implemented by either special purpose, hardware-based computer systems which perform the specified functions or steps, or suitable combinations of special purpose hardware and computer instructions.
- As used herein, the terms “user” and “participant” may interchangeably include any person, entity, charitable organization, machine, hardware, software, or business who accesses and uses the system of the invention, including purchasers, merchants, card issuers, financial services companies, healthcare oriented companies (e.g., hospitals, health maintenance organizations, medical offices, and the like), and other systems requiring confidentiality, privacy of information, and protection of related rights. Participants in the system may interact with one another either online or off-line. It is further noted that other participants may be involved in various embodiments of the invention, such as an intermediary settlement institution, though these participants are not always described in detail.
- In the foregoing specification, the invention has been described with reference to specific embodiments. Various modifications and changes can be made, however, without departing from the scope of the present invention as set forth in the claims below. The specification and figures are to be regarded in an illustrative manner, rather than a restrictive one, and all such modifications are intended to be included within the scope of present invention. Accordingly, the scope of the invention should be determined by the appended claims and their legal equivalents, rather than by the examples given above. For example, the steps recited in any of the method or process claims may be executed in any order and are not limited to the order presented in the claims.
- Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as critical, required, or essential features or elements of any or all the claims. As used herein, the terms “comprises”, “comprising”, “includes”, “including”, or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises or includes a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, no element described herein is required for the practice of the invention unless expressly described as “essential” or “critical”.
Claims (16)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/747,541 US7257225B2 (en) | 2003-12-29 | 2003-12-29 | System and method for high speed reversible data encryption |
PCT/US2004/013150 WO2005067414A2 (en) | 2003-12-29 | 2004-04-28 | System and method for high speed reversible data encryption |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/747,541 US7257225B2 (en) | 2003-12-29 | 2003-12-29 | System and method for high speed reversible data encryption |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050147252A1 true US20050147252A1 (en) | 2005-07-07 |
US7257225B2 US7257225B2 (en) | 2007-08-14 |
Family
ID=34710807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/747,541 Expired - Fee Related US7257225B2 (en) | 2003-12-29 | 2003-12-29 | System and method for high speed reversible data encryption |
Country Status (2)
Country | Link |
---|---|
US (1) | US7257225B2 (en) |
WO (1) | WO2005067414A2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005312A1 (en) * | 2001-06-29 | 2003-01-02 | Kabushiki Kaisha Toshiba | Apparatus and method for creating a map of a real name word to an anonymous word for an electronic document |
US20100058476A1 (en) * | 2005-04-28 | 2010-03-04 | Kazuyoshi Isoda | Electronic information retention method/system, electronic information split retention method/system, electronic information split restoration processing method/system, and programs for the same |
US20150261477A1 (en) * | 2014-03-14 | 2015-09-17 | Canon Kabushiki Kaisha | Image forming apparatus, method for controlling the same, and computer-readable storage medium |
CN110457916A (en) * | 2019-07-19 | 2019-11-15 | 平安科技(深圳)有限公司 | A kind of electronic contract encryption method, device and terminal device |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288394A1 (en) | 2000-12-01 | 2007-12-13 | Carrott Richard F | Transactional security over a network |
US8260723B2 (en) * | 2000-12-01 | 2012-09-04 | Carrott Richard F | Transactional security over a network |
JP5433498B2 (en) * | 2010-05-27 | 2014-03-05 | 株式会社東芝 | Cryptographic processing device |
Citations (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3662343A (en) * | 1970-07-29 | 1972-05-09 | Docutel Corp | Credit card automatic currency dispenser |
US4004089A (en) * | 1975-02-28 | 1977-01-18 | Ncr Corporation | Programmable cryptic device for enciphering and deciphering data |
US4849927A (en) * | 1987-06-12 | 1989-07-18 | Ncr Corporation | Method of controlling the operation of security modules |
US5008938A (en) * | 1990-03-09 | 1991-04-16 | Motorola, Inc. | Encryption apparatus |
US5054067A (en) * | 1990-02-21 | 1991-10-01 | General Instrument Corporation | Block-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator |
US5261001A (en) * | 1991-03-04 | 1993-11-09 | Fortress U&T (2000) Ltd | Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands |
US5425103A (en) * | 1994-03-14 | 1995-06-13 | Shaw; William Y. | Variable-key cryptography system |
US5432848A (en) * | 1994-04-15 | 1995-07-11 | International Business Machines Corporation | DES encryption and decryption unit with error checking |
US5724427A (en) * | 1995-08-17 | 1998-03-03 | Lucent Technologies Inc. | Method and apparatus for autokey rotor encryption |
US5799089A (en) * | 1993-10-14 | 1998-08-25 | Irdeto B.V. | System and apparatus for blockwise encryption/decryption of data |
US5809148A (en) * | 1996-05-17 | 1998-09-15 | Motorola, Inc. | Decryption of retransmitted data in an encrypted communication system |
US6108421A (en) * | 1998-03-06 | 2000-08-22 | Harris Corporation | Method and apparatus for data encryption |
US6252958B1 (en) * | 1997-09-22 | 2001-06-26 | Qualcomm Incorporated | Method and apparatus for generating encryption stream ciphers |
US20010010721A1 (en) * | 2000-01-25 | 2001-08-02 | Murata Kikai Kabushiki Kaisha And Masao Kasahara | Common key generating method, common key generating apparatus, encryption method, cryptographic communication method and cryptographic communication system |
US20010014154A1 (en) * | 1997-08-07 | 2001-08-16 | Hitachi, Ltd. | Data encrypting/decrypting conversion methods and apparatuses and data communication system adopting the same |
US6304657B1 (en) * | 1999-05-26 | 2001-10-16 | Matsushita Electric Industrial Co., Ltd. | Data encryption apparatus using odd number of shift-rotations and method |
US20010038693A1 (en) * | 1997-09-17 | 2001-11-08 | Luyster Frank C. | Block cipher method |
US20020018562A1 (en) * | 2000-06-13 | 2002-02-14 | Hynix Semiconductor Inc. | Key scheduler for encryption apparatus using data encryption standard algorithm |
US20020159589A1 (en) * | 2001-04-17 | 2002-10-31 | She Alfred C. | Pipelined deciphering round keys generation |
US20020159599A1 (en) * | 2000-03-09 | 2002-10-31 | Mitsuru Matsui | Block encryption device using auxiliary conversion |
US6490357B1 (en) * | 1998-08-28 | 2002-12-03 | Qualcomm Incorporated | Method and apparatus for generating encryption stream ciphers |
US20020191784A1 (en) * | 2001-06-08 | 2002-12-19 | Nhu-Ha Yup | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
US20030002663A1 (en) * | 2001-06-29 | 2003-01-02 | Kurdziel Michael Thomas | Method and apparatus for data encryption |
US6510228B2 (en) * | 1997-09-22 | 2003-01-21 | Qualcomm, Incorporated | Method and apparatus for generating encryption stream ciphers |
US20030028786A1 (en) * | 2001-07-26 | 2003-02-06 | Shakeel Mustafa | System and method for software anti-piracy licensing and distribution |
US20030026430A1 (en) * | 1998-05-29 | 2003-02-06 | Makoto Aikawa | Encrypting conversion apparatus, decrypting conversion apparatus, cryptographic communication system, and electronic toll collection apparatus |
US20030044008A1 (en) * | 2001-08-30 | 2003-03-06 | Ken Umeno | Converter, encryption/decryption system, multi-stage converter, converting method, multi-stage converting method, program, and information recording medium |
US20030072444A1 (en) * | 2001-09-08 | 2003-04-17 | Yi Hu | Data encryption/decryption apparatus |
US6570989B1 (en) * | 1998-04-27 | 2003-05-27 | Matsushita Electric Industrial Co., Ltd. | Cryptographic processing apparatus, cryptographic processing method, and storage medium storing cryptographic processing program for realizing high-speed cryptographic processing without impairing security |
US20030099352A1 (en) * | 2001-10-04 | 2003-05-29 | Chih-Chung Lu | Apparatus for encryption and decryption, capable of use in encryption and decryption of advanced encryption standard |
US20030108195A1 (en) * | 2001-06-28 | 2003-06-12 | Fujitsu Limited | Encryption circuit |
US20030133568A1 (en) * | 2001-12-18 | 2003-07-17 | Yosef Stein | Programmable data encryption engine for advanced encryption standard algorithm |
-
2003
- 2003-12-29 US US10/747,541 patent/US7257225B2/en not_active Expired - Fee Related
-
2004
- 2004-04-28 WO PCT/US2004/013150 patent/WO2005067414A2/en active Application Filing
Patent Citations (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3662343A (en) * | 1970-07-29 | 1972-05-09 | Docutel Corp | Credit card automatic currency dispenser |
US4004089A (en) * | 1975-02-28 | 1977-01-18 | Ncr Corporation | Programmable cryptic device for enciphering and deciphering data |
US4849927A (en) * | 1987-06-12 | 1989-07-18 | Ncr Corporation | Method of controlling the operation of security modules |
US5054067A (en) * | 1990-02-21 | 1991-10-01 | General Instrument Corporation | Block-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator |
US5008938A (en) * | 1990-03-09 | 1991-04-16 | Motorola, Inc. | Encryption apparatus |
US5261001A (en) * | 1991-03-04 | 1993-11-09 | Fortress U&T (2000) Ltd | Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands |
US5799089A (en) * | 1993-10-14 | 1998-08-25 | Irdeto B.V. | System and apparatus for blockwise encryption/decryption of data |
US5425103A (en) * | 1994-03-14 | 1995-06-13 | Shaw; William Y. | Variable-key cryptography system |
US5432848A (en) * | 1994-04-15 | 1995-07-11 | International Business Machines Corporation | DES encryption and decryption unit with error checking |
US5724427A (en) * | 1995-08-17 | 1998-03-03 | Lucent Technologies Inc. | Method and apparatus for autokey rotor encryption |
US5809148A (en) * | 1996-05-17 | 1998-09-15 | Motorola, Inc. | Decryption of retransmitted data in an encrypted communication system |
US20010014154A1 (en) * | 1997-08-07 | 2001-08-16 | Hitachi, Ltd. | Data encrypting/decrypting conversion methods and apparatuses and data communication system adopting the same |
US6606385B1 (en) * | 1997-08-07 | 2003-08-12 | Hitachi, Ltd. | Data encrypting/decrypting conversion methods and apparatuses and data communication system adopting the same |
US20010038693A1 (en) * | 1997-09-17 | 2001-11-08 | Luyster Frank C. | Block cipher method |
US6578150B2 (en) * | 1997-09-17 | 2003-06-10 | Frank C. Luyster | Block cipher method |
US6252958B1 (en) * | 1997-09-22 | 2001-06-26 | Qualcomm Incorporated | Method and apparatus for generating encryption stream ciphers |
US6510228B2 (en) * | 1997-09-22 | 2003-01-21 | Qualcomm, Incorporated | Method and apparatus for generating encryption stream ciphers |
US6108421A (en) * | 1998-03-06 | 2000-08-22 | Harris Corporation | Method and apparatus for data encryption |
US6570989B1 (en) * | 1998-04-27 | 2003-05-27 | Matsushita Electric Industrial Co., Ltd. | Cryptographic processing apparatus, cryptographic processing method, and storage medium storing cryptographic processing program for realizing high-speed cryptographic processing without impairing security |
US20030026430A1 (en) * | 1998-05-29 | 2003-02-06 | Makoto Aikawa | Encrypting conversion apparatus, decrypting conversion apparatus, cryptographic communication system, and electronic toll collection apparatus |
US6490357B1 (en) * | 1998-08-28 | 2002-12-03 | Qualcomm Incorporated | Method and apparatus for generating encryption stream ciphers |
US6304657B1 (en) * | 1999-05-26 | 2001-10-16 | Matsushita Electric Industrial Co., Ltd. | Data encryption apparatus using odd number of shift-rotations and method |
US20010010721A1 (en) * | 2000-01-25 | 2001-08-02 | Murata Kikai Kabushiki Kaisha And Masao Kasahara | Common key generating method, common key generating apparatus, encryption method, cryptographic communication method and cryptographic communication system |
US20020159599A1 (en) * | 2000-03-09 | 2002-10-31 | Mitsuru Matsui | Block encryption device using auxiliary conversion |
US20020018562A1 (en) * | 2000-06-13 | 2002-02-14 | Hynix Semiconductor Inc. | Key scheduler for encryption apparatus using data encryption standard algorithm |
US20020159589A1 (en) * | 2001-04-17 | 2002-10-31 | She Alfred C. | Pipelined deciphering round keys generation |
US20020191784A1 (en) * | 2001-06-08 | 2002-12-19 | Nhu-Ha Yup | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
US20030108195A1 (en) * | 2001-06-28 | 2003-06-12 | Fujitsu Limited | Encryption circuit |
US20030002663A1 (en) * | 2001-06-29 | 2003-01-02 | Kurdziel Michael Thomas | Method and apparatus for data encryption |
US20030028786A1 (en) * | 2001-07-26 | 2003-02-06 | Shakeel Mustafa | System and method for software anti-piracy licensing and distribution |
US20030044008A1 (en) * | 2001-08-30 | 2003-03-06 | Ken Umeno | Converter, encryption/decryption system, multi-stage converter, converting method, multi-stage converting method, program, and information recording medium |
US20030072444A1 (en) * | 2001-09-08 | 2003-04-17 | Yi Hu | Data encryption/decryption apparatus |
US20030099352A1 (en) * | 2001-10-04 | 2003-05-29 | Chih-Chung Lu | Apparatus for encryption and decryption, capable of use in encryption and decryption of advanced encryption standard |
US20030133568A1 (en) * | 2001-12-18 | 2003-07-17 | Yosef Stein | Programmable data encryption engine for advanced encryption standard algorithm |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030005312A1 (en) * | 2001-06-29 | 2003-01-02 | Kabushiki Kaisha Toshiba | Apparatus and method for creating a map of a real name word to an anonymous word for an electronic document |
US7243304B2 (en) * | 2001-06-29 | 2007-07-10 | Kabushiki Kaisha Toshiba | Apparatus and method for creating a map of a real name word to an anonymous word for an electronic document |
US20100058476A1 (en) * | 2005-04-28 | 2010-03-04 | Kazuyoshi Isoda | Electronic information retention method/system, electronic information split retention method/system, electronic information split restoration processing method/system, and programs for the same |
US20150261477A1 (en) * | 2014-03-14 | 2015-09-17 | Canon Kabushiki Kaisha | Image forming apparatus, method for controlling the same, and computer-readable storage medium |
US10110766B2 (en) * | 2014-03-14 | 2018-10-23 | Canon Kabushiki Kaisha | Method of controlling a printing apparatus that scrambles identification information of an authenticated user and causes a printer to print characters obtained by scrambling the identification information, and related printing method, and non-transitory computer readable medium |
CN110457916A (en) * | 2019-07-19 | 2019-11-15 | 平安科技(深圳)有限公司 | A kind of electronic contract encryption method, device and terminal device |
Also Published As
Publication number | Publication date |
---|---|
US7257225B2 (en) | 2007-08-14 |
WO2005067414A3 (en) | 2006-02-09 |
WO2005067414A2 (en) | 2005-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9514330B2 (en) | Meta-complete data storage | |
US20200213284A1 (en) | Vaultless Tokenization Engine | |
US8874932B2 (en) | Method for order invariant correlated encrypting of data and SQL queries for maintaining data privacy and securely resolving customer defects | |
KR20030057565A (en) | Anti-spoofing password protection | |
JPH11506588A (en) | Cryptographic access and labeling system | |
US8312288B2 (en) | Secure PIN character retrieval and setting using PIN offset masking | |
JP2001034538A (en) | Data processing method | |
GB2484382A (en) | Generating a test database for testing applications by applying format-preserving encryption to a production database | |
CN101002417A (en) | System and method for dis-identifying sensitive information and assocaites records | |
JPWO2004084483A1 (en) | Information management system | |
Bella et al. | An overview of the verification of SET | |
Bond | Understanding Security APIs | |
US7257225B2 (en) | System and method for high speed reversible data encryption | |
US20190362093A1 (en) | Computer-implemented method of transferring a data string from an application to a data protection device | |
JP2024508565A (en) | Protection of databases, data transmission, and files without the use of encryption | |
JP2002539545A (en) | Anonymization method | |
Trček | Security policy conceptual modeling and formalization for networked information systems | |
Mödersheim | Models and methods for the automated analysis of security protocols | |
CN113449320A (en) | Desensitization method and system for sensitive data of database | |
Ivan et al. | Security of Collaborative Banking Systems | |
Barker et al. | Security standards—Government and commercial | |
Künnemann | Foundations for analyzing security APIs in the symbolic and computational model | |
Khare et al. | Blockchain: Security And Concerns | |
Coles et al. | Expert SQL server 2008 encryption | |
Yin et al. | A modified model for private data security facing e-commerce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AMERICAN EXPRESS TRAVEL RELATED SERVICES COMPANY, Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DASARI, SRINIVAS V.;HARVEY, KEVIN T.;REEL/FRAME:014854/0673 Effective date: 20031222 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: III HOLDINGS 1, LLC, DELAWARE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AMERICAN EXPRESS TRAVEL RELATED SERVICES COMPANY, INC.;REEL/FRAME:032722/0746 Effective date: 20140324 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: LIBERTY PEAK VENTURES, LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:III HOLDINGS 1, LLC;REEL/FRAME:045611/0193 Effective date: 20180315 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20190814 |