Secure encryption of partial blocks
By adding block length values and non-zero padding to partial data blocks, the encryption method enhances security against cryptographic attacks, ensuring secure encryption of partial data blocks.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2022-08-31
- Publication Date
- 2026-07-29
AI Technical Summary
Conventional block encryption methods pad the last data block with zeros, compromising the security of partial data blocks, especially in cases where the plaintext residue is low-entropy and susceptible to cryptographic attacks.
Enhance encryption by appending block length values and non-zero padding (NZP) to partial data blocks before encryption, using methods like Encrypt Mix Encrypt 2 (EME2) to secure the encryption process.
The method significantly reduces the effectiveness of attacks on partial data blocks by ensuring full-block encryption, making it difficult to identify the plaintext contents.
Smart Images

Figure 0007896982000001 
Figure 0007896982000002 
Figure 0007896982000003
Abstract
Description
Technical Field
[0001] This disclosure generally relates to the encryption of digital data. More particularly, this disclosure relates to the encryption of partial data blocks.
Background Art
[0002] Block data encryption methods divide the target plaintext data into data blocks of a certain size and then apply an encryption algorithm to each block. Since the plaintext may not contain a complete number of data blocks, a plaintext residue occurs. A typical block encryption method pads the last data block with its residue and the necessary number of zeros to complete the block.
Summary of the Invention
[0003] To provide a basic understanding of one or more embodiments of this disclosure, the following summary is presented. This summary is not intended to identify key or essential elements nor to delineate any scope of particular embodiments or any scope of the claims. Its sole purpose is to present concepts in a simplified form as a prelude to the more detailed description that follows. In one or more embodiments described herein, a device, system, computer-implemented method, apparatus, or computer program product or a combination thereof enables secure encryption of storage blocks partially filled with plaintext.
[0004] Aspects of the present invention disclose methods, systems, and computer-readable media relating to receiving blocks of compressed data, determining the size of the compressed data in bytes, adding a trailer to the compressed data, wherein the trailer is associated with the size of the compressed data in bytes, encrypting the compressed data and the trailer, creating encrypted data, wherein the header of the encrypted data includes the number of complete encrypted data blocks, and encrypting the data blocks by providing the encrypted data to a user.
[0005] The above and other purposes, features, and advantages of this disclosure will become more apparent through a more detailed description of some embodiments of this disclosure in the accompanying drawings. In embodiments of this disclosure, the same reference numerals generally refer to the same components. [Brief explanation of the drawing]
[0006] [Figure 1] This is a schematic diagram of a computing environment according to one embodiment of the present invention. [Figure 2] This flowchart shows the operation sequence according to one embodiment of the present invention. [Figure 3] This figure shows a cloud computing environment according to one embodiment of the present invention. [Figure 4] This figure shows an abstraction model layer according to one embodiment of the present invention. [Modes for carrying out the invention]
[0007] Several embodiments of this disclosure will be described in more detail with reference to the accompanying drawings illustrating such embodiments. However, this disclosure can be implemented in various forms and should therefore not be construed as being limited to the embodiments disclosed herein.
[0008] Deterministic encryption has a poor ability to protect low-entropy plaintext. The disclosed embodiments provide a method for protecting low-entropy plaintext input. An example of low-entropy plaintext is created by a file system that stores an N+1 byte-length file on a fixed-block storage system that stores data in fixed-length sectors (e.g., 512 bytes or 4096 bytes). If N is evenly divisible by the sector length, this means that the last byte of the file occupies the last sector necessary to record the file, i.e., the last sector contains only one byte.
[0009] The Advanced Encryption Standard (AES) is a block cipher technique that encrypts 16 bytes at a time (i.e., an AES block). Many AES encryption modes (e.g., ECB, CBC, CFB, OFB, XEX, etc.) always produce a ciphertext of some integer in 16-byte blocks. The XTS encryption mode uses ciphertext theft, which allows any integer (16 or greater) of bytes to be encrypted into the same number of ciphertext bytes. To efficiently decrypt an XTS, one must know the exact length of the ciphertext to be decrypted. Encryption modes such as XTS-AES deterministic use produce a fixed ciphertext block output for a given key and a 16-byte AES block input, and can be weak if an attacker has access to the cryptographic oracle (i.e., can perform encryption using the key and collect the resulting ciphertext output).
[0010] To reduce the granularity of the compression ratio information that is "leaked," the disclosed embodiments append bytes to the received data before encryption. When the exact number of bytes is known, a compressed fixed block sector (e.g., 4KB) is clearly more susceptible to leakage than when only the number of bytes rounded up modulo 16 is known (e.g., the final AES block contains 1, 2, ... 16 bytes).
[0011] For example, if an attacker knows that an AES block can contain 1 byte of "content," and that the remaining 15 bytes of that AES block are filled with a known value (e.g., zero padding), then an attacker with access to the cryptographic oracle can create ciphertexts for all 256 possible values of that 1 byte, resulting in 256 ciphertext outputs (each 16 bytes long). If the attacker sees one of these 256 ciphertext values (the expected offset to the resulting ciphertext), they will know which plaintext bytes were encrypted.
[0012] One use case requiring deterministic encryption is an extension of Length Preserving Compression (LPC) to enable data deduplication. One such extension is called opportunistic deduplication, which requires the use of convergent encryption (a form of deterministic encryption) for data that is sufficiently compressible. In its most basic form, LPC maximizes the capabilities of downstream compression engines to achieve the highest possible compression ratio by using zeros for all pads in the last block (this is effectively just removing zeros). If the compressed plaintext to be encrypted contains only one byte (or a few bytes) that goes into the last AES block to be encrypted, that last byte can be easily identified using the attack described above. The disclosed embodiment enables an improvement in security by encrypting the bytes of plaintext data in the last partial data block.
[0013] The disclosed embodiments enhance the security of encrypted data by filling partial data blocks with block length values and non-zero pads (NZP) before encrypting the blocks. This method of filling partial blocks reduces the effectiveness of attacks aimed at obtaining the plaintext of partial data blocks.
[0014] In one embodiment, the method enhances the security of encrypted data by receiving blocks of compressed data, determining the byte size of the compressed data, i.e., the size in bytes, and attaching a trailer to the compressed data (the trailer is associated with the determined byte size of the compressed data). In this embodiment, the method further encrypts the compressed data and the attached trailer to produce encrypted data. The header of the encrypted data includes the number of complete encrypted data blocks of the encrypted data.
[0015] Aspects of the present invention provide improvements in the field of data encryption. Conventional encryption pads the last partial data block with zeros to facilitate the data compression task. This method of padding the last partial block reduces the security of the plaintext contained in the last data block. Adding an intrablock length value and non-zero padding provides a full block for encryption, rather than an incomplete block of plaintext and the remnants of zero padding. Full-block encryption with NZP produces ciphertext that is difficult to attack.
[0016] Aspects of the present invention also provide improvements to computer functions. In particular, implementations of the present invention cover specific improvements to the operation of encryption systems such as AES encryption. The disclosed embodiments enhance the security of encrypted plaintext by eliminating ciphertext artifacts resulting from the use of all zeros to pad partial data blocks.
[0017] In one embodiment, one or more components of the system employ hardware, software, or both to solve inherently technical problems (e.g., modifying partial data blocks to include block length values, plaintext subblocks, and non-zero pads, and encrypting padded data blocks). These solutions are not abstract but require processing power to facilitate the secure encryption of partial data blocks and therefore cannot be performed as a series of intelligent actions by humans. Furthermore, some of the processes performed may be carried out by specialized computers for performing predefined tasks related to the encryption method. For example, specialized computers can be used to perform tasks related to padding and encrypting partial data blocks.
[0018] In one embodiment, the method may receive compressed ciphertext data or uncompressed ciphertext data and then compress the ciphertext data. After compression, the method determines the number of bytes in the compressed data, the byte size of the compressed data, and the number of bytes in the last block of the compressed data, between 0 and 15. In this embodiment, for data with a compressed data length divisible by the encryption block length, the method appends a single-byte trailer to the compressed data indicating that the zero bytes in the last block of the compressed data are part of the ciphertext, and the four bits of the trailer are set to 0000. For data with a CDL not divisible by the block length, the method appends additional bytes and a single-byte trailer to complete the last block. To indicate the number of bytes in the last block that is part of the compressed data, the four bits of the trailer are set to a value between 0001 and 1111.
[0019] In one embodiment, the padding data includes non-deterministic (irregular) data from a compressed data stream having a CDL of fewer than M blocks. For compressed data having a CDL of more than M blocks, the padding includes deterministic data, such as a portion of the output of a keyed hash function used as the cryptographic initialization vector (IV).
[0020] In one embodiment, the method appends one or more blocks of non-deterministic data to the compressed data, in addition to the trailer, such that the total number of data blocks is equal to a defined block threshold of M AES blocks. In this embodiment, the last appended block includes 15 bytes of non-deterministic data and the single-byte trailer described above. In this embodiment, the four bits of the trailer indicate the number of additional padding blocks to be added to the compressed data. In this embodiment, the remaining four bits of the trailer indicate the number of bytes in the last block preceding the additional padding blocks that make up the compressed data.
[0021] Next, the final block, containing the compressed data, padding blocks (if any), and trailer, is encrypted using the selected encryption function. The method determines the number of blocks to be encrypted. This block count is then provided as part of a 2-byte header that is appended to the blocks of ciphertext along with the encryption initialization vector. The method then provides the ciphertext, header, and IV to the user.
[0022] In one embodiment, the method deviates from a simple form of length-preserving compression (LPC) to secure the case where the last AES block is only partially filled. Specifically, whenever the actual length of the compressed data fills 15 bytes or less of the last 16 bytes of the AES block to be recorded, the method treats that block differently. As an example, the length (L) field of the LPC is set to N+1, where N is an integer for the fully filled AES block, and "1" is a flag indicating that the last AES block is effectively only partially filled. The present invention extends the LPC such that this last AES block is formatted as follows: 1) An In-Block Length (IBL) field representing the exact number (1 to 15) of compressed data bytes input into this AES block. The simplest form of this IBL is to use a 1-byte IBL field, although the IBL can be as small as 4 bits (in which case it can represent 16 values). 2) The IBL field is then followed by a plaintext (P) field of 15 bytes or less. 3) The P byte is followed by 0 to 14 bytes of non-zero padding (NZP). Different embodiments utilize different possibilities for the content of the NZP byte, as described below.
[0023] In one embodiment, a method for encrypting data includes dividing N + 1 bytes of data into data blocks, where N is evenly divisible by the block size. For embodiments that include the use of length-preserving compression (LPC), the method requires storing a data chunk of up to 4KB within a 4KB fixed block storage sector. The method fills the 4KB sector with L, which is a 2-byte field that represents or indicates the length of the compressed plaintext (CPT) to be encrypted, and the compressed plaintext is within the range of 1 to 4094 - T bytes in length, where T represents the minimum length of zero-padding used to fill the sector. In one embodiment, the CPT is within the range of 1 to 4096 - T bytes, where T represents the combination of the 2 bytes of L and the 16 bytes of sector zero-padding. In one embodiment, the plaintext may not be compressible enough to be within the defined CPT range or leave enough space for ZP. In this embodiment, the method encrypts the plaintext directly (i.e., without intermediate data compression) using an encryption mode that does not expand the plaintext so that the encrypted ciphertext fits within the sector.
[0024] In one embodiment, for any value between 1 and 4094 - T, the last 16-byte block of the sector is typically (with a 15 / 16 probability) only partially filled with plaintext. The method then fills the remainder of this last block with NZP. In one embodiment, the method evaluates the CPT value to determine whether the last block containing the plaintext is filled entirely or partially. In one embodiment, the method evaluates the last block containing the plaintext data to determine whether that block is filled entirely or partially with the plaintext data.
[0025] In the disclosed embodiments, the last plaintext block of the foe AES using the LPC scheme contains NZP between 1 and 15 bytes. In one embodiment, the method generates a random number having the required number of bytes and fills the last AES block with the irregularly generated value. In this embodiment, the NZP provides security due to the irregular nature of the NZP value. Such irregular NZP values rarely or never provide opportunities for data deduplication because the same plaintext data is very likely to have different irregularly generated NZP values.
[0026] In one embodiment, the method derives the 1 to 15 bytes required for NZP from the keyed hash of the plaintext of the full blocks of the current memory sector. The method uses the same key that is intended to be used for the encryption of the plaintext along with a suitable hash function such as SHA256 to derive the hash value. In one embodiment, the key constitutes the public key of a public-private key pair and the recipient holds the private key that is used to decrypt the received AES encrypted data sector. The method then truncates the hash value to the number of bytes required to fill the partially filled last data block with NZP. In this embodiment, the method may generate keyed hashes of all full blocks of the current sector (i.e., those blocks associated with the last partially filled block). In this embodiment, the method may generate the keyed hash value using any number of associated blocks from 1 to N, where N represents the total number of filled data blocks associated with the last partially filled block.
[0027] In one embodiment, the method derives the NZP from a keyed hash value generated using an encryption key and a portion of the ciphertext generated by encrypting the full block associated with the last partial block. In this embodiment, the method may generate the keyed hash value using any location from one to N full blocks of the ciphertext, where N represents the perfect number of full blocks associated with the last partially filled block. In this embodiment, the method truncates the generated keyed hash value to the number of bytes required to completely fill the last partially filled data block with the NZP.
[0028] In one embodiment, the method generates an NZP from a keyed hash value of all plaintext in the current sector (i.e., plaintext from the full block of the sector and plaintext from the last partially filled block). In this embodiment, the method may use plaintext from the last partial block and plaintext from any location between one and N blocks in the sector, where N is the perfect number of full data blocks in the sector. The method may generate a keyed hash value using blocks starting with the first full block and continuing forward or blocks starting with the last full block and continuing backward. For example, the method may use plaintext from the first full block and an additional M full blocks (where M is between 0 and N-1) and a partial plaintext from the last block. As another example, the method may generate a keyed hash value from plaintext from the last partially filled data block, the last full data block preceding that partially filled data block, and M additional data blocks counted backward from the last full block, where M is between 0 and N-1. In this embodiment, the method truncates the keyed hash value as needed to fill the last partially filled data block.
[0029] In one embodiment, the method uses the remaining portion of the keyed hash value generated as an initialization vector (IV) for AES encryption. For example, IV = hk = hash(Kd||P), where Kd constitutes the key and P constitutes the plaintext used when generating the IV. In this embodiment, the method uses 12 bytes of the generated value as the IV, while a hash function such as SHA256 generates a 32-byte output value. In this embodiment, the method uses the remaining 20 bytes of the generated value as needed to fill the last partial full data block.
[0030] In one embodiment, after filling the last partially filled data block of a sector with an appropriate NZP, the method encrypts the last data block using AES and the IV generated as described above. In this embodiment, the method provides the ciphertext generated by encrypting the last data block to a set of ciphertexts generated by encrypting the other data blocks of the sector. The method provides the complete set of ciphertexts for distribution to one or more recipients of the encrypted data. In this embodiment, one or more recipients receive the set of ciphertexts and decrypt the ciphertexts using the private key of a public-private-key pair.
[0031] In one embodiment, after filling a partial data block with the IBL length value and NXP, the method proceeds to encrypt the data block. In another embodiment, the method encrypts the data block associated with the partial block before filling the partial block and uses at least a portion of the ciphertext of these blocks in generating the NZP.
[0032] In one embodiment, the method uses wide-block encryption to encrypt all data blocks in a sector as a whole, reducing the effectiveness of attacks based on the final data block containing only a portion of the plaintext. In this embodiment, the method uses encryption such as wide-block encryption, such as Encrypt Mix Encrypt 2 (EME2), to encrypt the set of data blocks.
[0033] Figure 1 provides a schematic diagram of exemplary network resources relating to the implementation of the disclosed invention. The invention may be implemented in a processor of any of the disclosed elements that process an instruction stream. As shown in the figure, a networked client device 110 connects wirelessly to a server subsystem 102. A client device 104 connects wirelessly to the server subsystem 102 via a network 114. Client devices 104 and 110 are equipped with a time-series data encryption program (not shown) and sufficient computing resources (processor, memory, network communication hardware) to run the program. As shown in Figure 1, the server subsystem 102 comprises a server computer 150. Figure 1 shows a block diagram of the components of the server computer 150 in a networked computer system 1000 according to one embodiment of the present invention. It should be understood that Figure 1 merely provides an example of one implementation and does not imply any limitations with respect to environments in which different embodiments may be implemented. Many modifications can be made to the illustrated environment.
[0034] The server computer 150 may include a processor 154, memory 158, persistent storage 170, a communication unit 152, an input / output (I / O) interface 156, and a communication fabric 140. The communication fabric 140 provides communication between the cache 162, the memory 158, the persistent storage 170, the communication unit 152, and the input / output (I / O) interface 156. The communication fabric 140 may be implemented using any architecture designed to pass data or control information, or both, between the processor (such as a microprocessor, communication and network processor), system memory, peripheral devices, and any other hardware components in the system. For example, the communication fabric 140 may be implemented using one or more buses.
[0035] Memory 158 and persistent storage 170 are computer-readable storage media. In this embodiment, memory 158 includes random-access memory (RAM) 160. Generally, memory 158 can include any suitable volatile or non-volatile computer-readable storage media. Cache 162 is a high-speed memory that improves the performance of processor 154 by holding recently accessed data from memory 158 and data close to recently accessed data.
[0036] Program instructions and data used to implement embodiments of the present invention, such as a data encryption program 175, are stored in persistent storage 170 for execution or access, or both, via a cache 162 by one or more of the processors 154 of the server computer 150. In this embodiment, persistent storage 170 includes a magnetic hard disk drive. As an alternative to or addition to the magnetic hard disk drive, persistent storage 170 may include a solid-state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer-readable storage medium capable of storing program instructions or digital information.
[0037] The media used by the persistent storage 170 may also be removable. For example, a removable hard drive may be used for the persistent storage 170. Other examples include optical and magnetic disks, thumb drives, and smart cards inserted into the drive for transfer to another computer-readable storage medium, which is also part of the persistent storage 170.
[0038] In these examples, the communication unit 152 provides communication with other data processing systems or devices, including the resources of client computing devices 104 and 110. In these examples, the communication unit 152 includes one or more network interface cards. The communication unit 152 may provide communication using either or both physical communication links and wireless communication links. Software distribution programs, as well as other programs and data used in the implementation of the present invention, may be downloaded via the communication unit 152 to the persistent storage 170 of the server computer 150.
[0039] The I / O interface 156 enables data input and output with other devices that may be connected to the server computer 150. For example, the I / O interface 156 may provide connection to an external device 190 such as a keyboard, keypad, touchscreen, microphone, digital camera, or any other suitable input device or combination thereof. The external device 190 may also include portable computer-readable storage media such as a thumb drive, portable optical or magnetic disk, and memory card. Software and data used to implement embodiments of the present invention, such as a data encryption program 175 on the server computer 150, may be stored on such portable computer-readable storage media and loaded into persistent storage 170 via the I / O interface 156. The I / O interface 156 also connects to a display 180.
[0040] The display 180 provides a mechanism for displaying data to the user and may be, for example, a computer monitor. The display 180 can also function as a touch screen, such as the display of a tablet computer.
[0041] Figure 2 provides a flowchart 200 illustrating exemplary activities related to the implementation of this disclosure. After the program starts, in block 210, a data encryption program 175 running on one or more processors, such as the processor shown in Figure 1, receives compressed or uncompressed plaintext data. If the data is uncompressed plaintext, the method executes a data compression routine to produce compressed plaintext data. In block 220, the method determines the byte size of the compressed data, which includes determining the number of bytes of compressed data present in the last block of the compressed data. As an example, the method divides the total number of compressed data by the block byte size to determine the number of complete blocks of compressed data and the number of bytes in the last subblock of compressed data. In block 230, the method modifies a subdata block by adding a trailer indicating the number of bytes in the subdata block to the plaintext of the subdata block.
[0042] In one embodiment, the method appends a block length value, which constitutes a 2-byte value relative to the plaintext length. In addition to the block length field and the plaintext, the method fills the remainder of the subblock with non-zero padding. The non-zero padding may consist of a generated random number, a keyed hash of the plaintext from other blocks of the sector associated with the subblock, a keyed hash of the ciphertext from other blocks of the sector associated with the subblock, or the remainder of a keyed hash value generated as an initialization vector for the cryptographic function used by the method.
[0043] In block 240, the method encrypts the combination of compressed data and the appended trailer. In one embodiment, the method appends additional data blocks to the compressed data to satisfy the minimum data block threshold requirement of the encryption algorithm. In one embodiment, the method uses a block encryption program to encrypt each block of the sector individually. In one embodiment, the method uses a wide-block encryption program to encrypt all blocks of the sector as a set.
[0044] In block 250, the method provides the user with encrypted data, along with an external header containing an indication of the total number of encrypted blocks and an encryption initialization vector. For example, the provided encrypted data includes a header, IV, ciphertext, and zero-pad format, where the zero-pad constitutes blocks of data sufficient to satisfy the output size of the encryption algorithm.
[0045] While this disclosure includes a detailed description of cloud computing, it should be understood that implementations of the teachings described herein are not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment currently known or to be developed in the future.
[0046] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with service providers. This cloud model may include at least five features, at least three service models, and at least four deployment models.
[0047] The features are as follows:
[0048] On-demand self-service: Cloud consumers can unilaterally provision computing functions such as server time and network storage automatically as needed, without requiring human interaction with service providers.
[0049] Extensive network access: The functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin-client platforms or thick-client platforms (e.g., mobile phones, laptops, and PDAs).
[0050] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated as needed. Consumers generally have no control or knowledge of the exact location of the resources provided, but they can be said to have location independence in that they may be able to pinpoint the location at a higher level of abstraction (e.g., country, state, or data center).
[0051] Rapid Flexibility: Features can be provisioned quickly and flexibly, sometimes automatically, to rapidly scale out, and rapidly release and scale in. To consumers, the features available for provisioning often appear unlimited and can be purchased in any quantity at any time.
[0052] Service Measurement: Cloud systems automatically control and optimize resource usage by leveraging metric capabilities at a certain level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both service providers and consumers.
[0053] The service model is as follows:
[0054] Software as a Service (SaaS): This refers to the ability provided to consumers to use applications from a provider that run on cloud infrastructure. These applications are accessible from various client devices via thin-client interfaces, such as web browsers (e.g., web-based email). With the expected exception of limited user-specific application configuration settings, consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or individual application functionalities.
[0055] Platform as a Service (PaaS): A feature provided to consumers to deploy applications they have created or acquired, written using programming languages and tools supported by the provider, onto cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure such as networks, servers, operating systems, or storage, but they control the deployed applications and, in some cases, the applications that host the environment configuration.
[0056] Infrastructure as a Service (IaaS) is a feature provided to consumers to provision processing, storage, networking, and other basic computing resources, enabling them to deploy and run any software, including operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but they do control the operating system, storage, and deployed applications, and in some cases, have limited control over selected network components (e.g., host firewalls).
[0057] The deployment model is as follows:
[0058] Private Cloud: A cloud infrastructure is operated exclusively for a specific organization. This cloud infrastructure may be managed by the organization or a third party and may reside on-premises or off-premises.
[0059] Community Cloud: Cloud infrastructure is shared by multiple organizations to support a specific community that shares common interests (e.g., missions, security requirements, policies, and compliance considerations). This cloud infrastructure may be managed by an organization or a third party and may reside on-premises or off-premises.
[0060] Public Cloud: Cloud infrastructure is available to the general public or large industry groups and is owned by organizations that sell cloud services.
[0061] Hybrid Cloud: Cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain independent entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing across clouds).
[0062] Cloud computing environments are service-oriented, emphasizing statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is the infrastructure, which includes a network of interconnected nodes.
[0063] Referring now to Figure 3, an exemplary cloud computing environment 50 is shown. As illustrated, the cloud computing environment 50 includes one or more cloud computing nodes 10 that can communicate with local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automotive computer system 54N or a combination thereof. The nodes 10 may communicate with each other. They may be physically or virtually grouped within one or more networks, such as a private cloud, community cloud, public cloud, or hybrid cloud, or a combination thereof, as described herein (not shown). This enables the cloud computing environment 50 to provide infrastructure, platforms, or software, or a combination thereof, as a service that does not require cloud consumers to maintain resources on their local computing devices. It should be understood that the types of computing devices 54A to 54N shown in Figure 3 are for illustrative purposes only, and that the computing node 10 and the cloud computing environment 50 can communicate with any type of computerized device via any type of network or network addressable connection or both (for example, using a web browser).
[0064] Referring now to Figure 4, a set of functional abstraction layers provided by the cloud computing environment 50 (Figure 3) is shown. It should be understood that the components, layers, and functions shown in Figure 4 are for illustrative purposes only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0065] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include a mainframe 61, RISC (Reduced Instruction Set Computer) architecture-based servers 62, 63, blade servers 64, storage devices 65, and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0066] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities may be provided: a virtual server 71, virtual storage 72, a virtual network 73 including a virtual private network, a virtual application and operating system 74, and a virtual client 75.
[0067] For example, the management layer 80 may provide the following functions: Resource provisioning 81 provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are used within the cloud computing environment and billing or invoices for the consumption of these resources. For example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. The user portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources so that the required service levels are met. Service level agreement (SLA) planning and execution 85 provides pre-positioning and procurement of cloud computing resources that are expected to be required in the future in accordance with the SLA.
[0068] The workload layer 90 provides examples of functions that can be utilized in a cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom education delivery 93, data analytics processing 94, transaction processing 95, and data encryption programs 175.
[0069] The present invention may be a system, method, or computer program product or combination thereof at any possible level of integration of technical details. The present invention may be advantageously implemented in any single or parallel system that processes instruction streams. The computer program product may include a computer-readable storage medium (or a plurality of computer-readable storage media) having computer-readable program instructions for causing a processor to carry out aspects of the present invention.
[0070] A computer-readable storage medium can be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer-readable storage medium may, but is not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any preferred combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes, namely, portable computer diskettes, hard disks, random-access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random-access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or grooved raised structures on which instructions are recorded, and any preferred combination thereof. The computer-readable storage media or computer-readable storage devices used herein should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through optical fiber cables), or electrical signals transmitted through wires.
[0071] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device, or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives computer-readable program instructions from the network and transfers those computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0072] The computer-readable program instructions for performing the operation of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk(R) and C++, and procedural programming languages such as the C programming language or similar programming languages. The computer-readable program instructions may be executed as a standalone software package entirely on the user's computer, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or a server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or it may be connected to an external computer (for example, via the Internet using an Internet service provider). In some embodiments, to carry out aspects of the present invention, an electronic circuit including, for example, a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA) may execute a computer-readable program instruction by personalizing the electronic circuit using state information of the computer-readable program instruction.
[0073] This specification describes aspects of the present invention with reference to flowcharts or block diagrams, or both, of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It will be understood that each block in the flowchart or block diagram, or both, and combinations of blocks in the flowchart or block diagram, or both, can be implemented by computer-readable program instructions.
[0074] These computer-readable program instructions may be provided to a general-purpose computer, a dedicated computer, or a processor of another programmable data processing device to create a machine, such that instructions executed via the processor of a computer or other programmable data processing device create means for performing functions / operations specified in one or more blocks of a flowchart or block diagram, or both. These computer-readable program instructions may also be stored on a computer-readable storage medium in which the instructions are collectively stored, so as to include a product containing instructions that perform modes of functions / operations specified in one or more blocks of a flowchart or block diagram, or both, and can be used to instruct a computer, a programmable data processing device, or other device or a combination thereof to function in a particular manner.
[0075] Computer-readable program instructions may also be instructions that are loaded into a computer, other programmable device, or other device to create a computer-executed process in which the instructions executed by the computer, other programmable device, or other device perform a function / action specified in one or more blocks of a flowchart or block diagram, or both, causing the computer, other programmable device, or other device to execute a series of operational steps.
[0076] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions containing one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in a block may be performed in an order different from the order shown in the figure. For example, two blocks shown consecutively may actually be executed substantially simultaneously, depending on the functionality involved, or they may be executed in reverse order, depending on the case. It should also be noted that each block in a block diagram or flowchart, or both, and combinations of blocks in a block diagram or flowchart, or both, may be implemented by a dedicated hardware-based system that performs a specified function or operation, or performs a combination of dedicated hardware and computer instructions.
[0077] References in this specification to “one embodiment,” “embodiment,” and “exemplary embodiment” indicate that the embodiments described may include certain features, structures, or characteristics, but not all embodiments necessarily include such features, structures, or characteristics. Furthermore, such phrases do not necessarily refer to the same embodiment. Moreover, when certain features, structures, or characteristics are described in relation to one embodiment, it is considered within the knowledge of those skilled in the art that they may affect such features, structures, or characteristics in relation to other embodiments, whether or not they are explicitly described.
[0078] The terms used herein are for the sole purpose of describing specific embodiments and are not intended to limit the invention. The singular forms “a,” “an,” and “the,” as used herein, are intended to include the plural form unless otherwise specified in the context. It will be further understood that the terms “comprises” or “comprising,” as used herein, indicate the presence of a described feature, integer, step, operation, element, or component, or a combination thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or combinations thereof.
[0079] The descriptions of various embodiments of the present invention are presented for illustrative purposes only and are not intended to be exhaustive or limitful to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The terminology used herein has been selected to best describe the principles of the embodiments, practical applications, or technical improvements to the technology available on the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
Claims
1. A computer implementation method for encrypting data blocks, Receiving compressed data by one or more computer processors, The one or more computer processors determine the size of the compressed data in byte units, The one or more computer processors identify the last block partially filled with compressed data as the first storage block from one or more blocks of the compressed data, which are aligned in block units of the block length of the cryptographic algorithm according to the determined size of the compressed data in byte units, The first storage block is processed by one or more computer processors. A block length field representing the number of data bytes of the compressed data within the first storage block, The compressed data in the first storage block, Non-zero padding sufficient to fill the first storage block, wherein the non-zero padding includes deterministic data generated using at least a portion of the compressed data. Modify it to include, The process involves encrypting one or more blocks of the compressed data, including the modified first storage block, using one or more computer processors to produce encrypted data, wherein the header of the encrypted data includes the number of complete encrypted data blocks. The one or more computer processors provide the encrypted data to the user. A computer implementation method, including
2. The computer implementation method according to claim 1, wherein the non-zero padding includes non-deterministic data.
3. The computer implementation method according to claim 1, wherein the non-zero padding includes a generated random number.
4. The computer implementation method according to claim 1, further comprising using one or more computer processors to add at least one block to the one or more blocks of the compressed data, wherein the at least one block includes a trailer indicating the number of blocks to be added.
5. The computer implementation method according to claim 4, further comprising adding a sufficient number of data blocks to satisfy a data block threshold using one or more computer processors.
6. The computer implementation of claim 1, wherein encrypting the first storage block includes encrypting the first storage block and all storage blocks associated with the first storage block using a wide-block encryption function.
7. A computer program for encrypting data blocks, wherein the computer program is configured on one or more computer processors. Receiving compressed data and, Determining the size of the compressed data in byte units, From one or more blocks of the compressed data, which are aligned in block units of the block length of the cryptographic algorithm according to the determined size of the compressed data in byte units, the last block partially filled with the compressed data is identified as the first storage block. The first storage block mentioned above, A block length field representing the number of data bytes of the compressed data within the first storage block, The compressed data in the first storage block, Non-zero padding sufficient to fill the first storage block, wherein the non-zero padding includes deterministic data generated using at least a portion of the compressed data. Modify it to include, Encrypting one or more blocks of the compressed data, including the modified first storage block, to produce encrypted data, wherein the header of the encrypted data includes the number of complete encrypted data blocks. To provide the user with the aforementioned encrypted data. A computer program that executes something.
8. The computer program according to claim 7, wherein the non-zero padding includes non-deterministic data.
9. The computer program according to claim 7, wherein the non-zero padding includes generated random numbers.
10. The computer program according to claim 7, wherein the computer program causes one or more computer processors to further perform the operation of adding at least one block of data to the compressed data, the at least one block including a trailer indicating the number of blocks to be added.
11. The computer program according to claim 10, wherein the computer program further causes the one or more computer processors to add enough blocks of data to satisfy a data block threshold.
12. The computer program according to claim 7, wherein encrypting the first storage block includes encrypting the first storage block and all storage blocks associated with the first storage block using a wide-block encryption function.
13. A computer system for encrypting data blocks, wherein the computer system One or more computer processors, one or more computer-readable storage devices, and a computer program according to any one of claims 7 to 12, stored on the one or more computer-readable storage devices for execution by the one or more computer processors. A computer system that includes [a specific feature / function].