Abstract
Cache attacks pose a serious security threat to cryptographic implementations in processor architectures. In this paper, we first propose cache attacks against Blowfish, which can break the protection of key-dependent S-box. This attack targets at the subkey calculation of Blowfish, and fully exploits features of the subkey calculation to construct a leakage equation group about the key. Without any knowledge of plaintext and ciphertext, the attacker only needs to obtain the cache leakage once to recover a variable-length key in minute-level time. More than that, we establish a leakage model for cache attack situations to evaluate the exhausting space of the intermediate value of block ciphers, and estimate the time complexity of cache attacks. In our experiments, we perform Flush + Reload and Prime + Probe attacks and recover the random key of Blowfish in OpenSSL 1.1.1h in 4 minutes. Furthermore, we have applied our attacks to existing systems, such as JavaScript-blowfish and Bcrypt. Our attack on JavaScript-blowfish can recover any plaintext input by the user. As for Bcrypt, our attack can recover the hash values stored in the database, thereby allowing attackers to impersonate the user’s identity.
Introduction
In the big data era, the cloud environment emerged as a means to quickly process massive amounts of data and reduce the cost of hardware facilities. The cloud has an open platform and resource sharing, which provide strong technical support for building big data services. However, it is also vulnerable to the security threat of micro-architecture side-channel attacks. Cloud management programs share physical hardware resources among concurrent virtual machines (VMs) to reduce computing overhead and improve efficiency. From the perspective of security, researchers have developed a set of technologies, such as hypervisor-OS privilege hierarchy and security extensions, to provide virtual memory isolation between VMs and processes. Although virtualization aims to strictly isolate and access the exclusive resources of the core, virtual memory is mapped to shared physical memory, which leads to shared resource attacks. An attacker can obtain the knowledge of shared resource contention by monitoring the execution time of the victim’s process, and then, they can infer the victim’s secret information.
Cache attack is one of the most widely used attack methods in micro-architecture side-channel attacks. In the past two decades, cache attacks have posed a huge security threat to cryptographic implementations. By observing the time difference of the victim’s memory access, the cache attacker learns whether the victim has accessed the target address and then obtains the intermediate value of ciphers and infers the key through further analysis.
Cache attack on fixed S-boxes
In block ciphers, an S-box is the only nonlinear structure, and its security determines the security of the whole cipher. The nonlinearity of an S-box indicates that it is usually implemented by a lookup table. Unfortunately, the lookup table of non-lightweight block ciphers needs to be stored in multiple cache lines. Therefore, an attacker can directly learn some bits of the input or output of an S-box by observing whether the target address is accessed and then recovering the key based on multiple cache leakage. Researchers have proposed cache attacks against block ciphers such as AES [3,10,13,19], DES [25], SM4 [17], ARIA [2], Camellia [20], and MISTY1 [7]. These attacks have the following commonalities:
The S-box is public and fixed; The first round S-box input is related to the key and the plaintext, while the last round S-box output is related to the key and the ciphertext, and the first or last round is the target of cache attack; The attacker performs a chosen-plaintext or chosen-ciphertext attack and observe multiple cache leakage of encryption and using exclusion to recover the key.
Cache attack on key-dependent S-boxes
[9] first proposed a cache attack against the North Korean cipher Pilsung. Both the substitution and the permutation steps in Pilsung depend on the key and neither of these are known to the attacker. However, the approach exploits the limited dependency of the first-round S-boxes on the second-round key, that is, the S-box used for the n-th byte in the first round solely depends on the corresponding byte of the second-round key. Their attack requires 19,472 oracle queries to fully recover the key.
Similarly to Pilsung, Blowfish has a key-dependent S-box, and it is generated through the entire encryption. Thus, it is difficult for an attacker to establish a link between the cache leakage and the key, let alone recover the key. Research has shown that Blowfish has a cache leakage but has not proposed a complete attack against Blowfish [15]. In our work, we found a clever way to bypass the key-dependent S-box, which is to perform cache attacks on the subkey calculation of Blowfish. Blowfish uses a fixed public S-box in subkey calculation, and the calculation process is only related to the key. This means that even if the attacker can monitor the victim’s multiple encryption processes, the leakage information will not increase. How to use limited leaked information to recover the key becomes a problem that we must solve.
Security and applications of Blowfish
Researchers generally believe that Blowfish has the advantages of both efficiency and security. [14] compared DES, 3DES, AES, Blowfish, Twofish, and Threefish. The results showed that Blowfish had the highest security level and fastest encryption speed among these ciphers and that it was difficult to form an effective attack against Blowfish, as shown in Table 1. [11] conducted an in-depth analysis of AES, DES, 3DES, RSA, and Blowfish in the Internet of Things (IoT) from the aspects of time complexity, size, encryption, and decryption speed. The results showed that Blowfish had better performance in the encrypted communication between two edge devices and that there were no known security vulnerabilities. Therefore, Blowfish is more suitable as a candidate algorithm for the standard encryption algorithm for IoT devices.
Blowfish is one of the most popular ciphers in the personal encryption field and is suitable for a wide range of applications, including bulk encryption, random bit generation, packet encryption, password hashing and management, mobile processors, email, file or disk encryption, data backup and Secure Shell. Besides, Blowfish is used by many popular products, such as CryptoDisk, PasswordWallet, Access Manager, Symantec NetBackup and SplashID. Many social media platforms and e-commerce websites also use Blowfish to protect user data. Moreover, Blowfish is included in many common open-source cryptographic libraries, such as OpenSSL, Crypto++, and mbedTLS.
Comparison of various ciphers on the basis of different parameters
Comparison of various ciphers on the basis of different parameters
We used the fixed values and the cache leakage of the subkey calculation to construct the equation group. According to whether the equation group has a solution, we can exclude most of the wrong key guesses. After that, we will receive a few solutions solved by different key guesses, one of which is solved by the correct key. We can recover the key in accordance with periodicity, that is, if the solution solved by the correct key XOR with the initial P-array, the result would be periodic; otherwise, it would be not.
To evaluate the time complexity of our attack, we established a leakage model suitable for the cache attack situations, which provides a theoretical basis for the time complexity estimation of the cache attack. The leakage model constructs the probability space for the input and output pairs of the nonlinear structure of ciphers and expresses the leakage as a specific event set in the probability space. By calculating the expectation of the basic event number, the attacker can learn the exhausting space size of the intermediate value in the average sense. The leakage model can also be used to estimate the time complexity of cache attacks against block ciphers other than Blowfish.
Aiming at the implementation of Blowfish in OpenSSL 1.1.1h, we performed Flush + Reload and Prime + Probe attack to recover the key in minute-level time, and the result verifies the effectiveness of our attack. Moreover, our attack fully exploits features of the subkey calculationdoes and not rely on knowledge of plaintext and ciphertext. Generally, we make the following contributions in this paper:
We performed the first cache attack on the implementation of Blowfish with a key-dependent S-box. The attacker does not need any knowledage of plaintext and ciphertext, only needs to obtain the cache leakage once to recover a variable-length key. We showed that in the case of Blowfish, key-dependent conversion did not provide inherent protection against cache attacks (Section 3). We established a leakage model for cache attack situations to reasonably evaluate the cache attack time complexity against block ciphers, not only Blowfish (Section 4). We showed how to recover the key of the Blowfish implementation in OpenSSL 1.1.1h via cache attacks, and we completed the attack in 4 minutes (Section 5). We have extended our attack to existing systems, such as JavaScript-blowfish and Bcrypt. In JavaScript-blowfish case, the attacker can obtain any plaintext input by the user. As for Bcrypt, the attacker can recover the hash values stored in the database, enabling him to impersonate the user’s identity (Section 6).
Background
Cache attacks
Multilevel caches are located between memory and CPU and are used to store data and instructions used recently to improve access efficiency. The cache that is closer to the core accesses data more quickly. Taking the x86 processor as an example, cache hierarchy ensures that each core has its own L1 and L2 caches and that the LLC cache is divided into partitions according to the number of cores. These partitions are connected by a ring bus, which ensures that each core can access a complete LLC. The cache hierarchy is shown in Fig. 1.

Cache hierarchy.
According to the locality principle of data access, the storage units accessed by the CPU tend to be clustered in a smaller continuous area, and the cache can effectively avoid high latency. The CPU first looks for data in the cache and produces two results:
Cache hit. If the CPU finds the requested data in the cache, it is considered a cache hit.
Cache loss. If the CPU does not find the requested data in the cache, the data must be retrieved through the system bus and copied to the cache.
So, cache hits are two orders of magnitude faster than cache misses.
Flush: The attacker uses the clflush instruction to refresh the cache;
Wait: Wait for the victim to access the target address;
Reload: The attacker reloads the target address and timing.

Flush + Reload attack.
Flush + Reload is fine-grained and highly efficient, but it relies on the clflush instruction. Thus, when the system disables the clflush instruction, the attacker must use other methods to clear the cache.
Prime: The attacker accesses the eviction sets;
Wait: Wait for the victim to access the target address;
Probe: The attacker again accesses the eviction sets and timing.

Prime + Probe attack.
If the probe time is long (over 300 ns), it indicates that the eviction set has been evicted to memory from the cache. This means that the victim has recently accessed the target address. If the access time is short (about 30 ns), it implies that the eviction set is still in the cache. This means that the victim has not accessed the target address during the waiting period. The advantage of the Prime + Probe attack is that the attacker only needs to access their memory, which makes the Prime + Probe more widely applicable to L1, L2, and LLC caches.
Blowfish, proposed by [23], is a generalized Feistel structure block cipher based on 64-bit blocks and a variable key length from 32 bits to 448 bits. Blowfish first executes a subkey calculation before encryption, as follows:
The P-array is initialized first, followed by the four S-boxes with the decimal part of π. Then, the P-array is XORed with the key by 8 bytes, and the result is denoted as The all-zero string is encrypted with the Blowfish using the subkeys described in step (1), and the result is denoted as
The process is continued until all entries of four S-boxes are replaced in order with the output of the continuously changing Blowfish.

Encryption of Blowfish.

Function F of Blowfish.
Our attack follows an identical threat model as most current cache side channel attacks [2,3,7,9,10,13,17,19,20,25]. We assume that the adversary is a normal user in the target system without root privileges and shares the same hardware platform as the victim. The adversary is able to execute non-privileged code, but cannot control the scheduling of the attacking process or the victim. Our assumption is a typical and practical assumption in cloud computing systems.
While the adversary cannot directly monitor the victim’s memory accesses, he can detect the shared cache state to determine if certain cache lines have been accessed by the victim’s program. This threat model covers the majority of cache side channel attacks like PRIME + PROBE [8] and FLUSH + RELOAD [27]. Existing works [4,6] commonly refer to the attackers in our threat model as “trace-based attackers” since they are able to probe the cache state after the execution of each program statement in the victim program.
Cache attack against Blowfish
This section assumes that the attacker has obtained an accurate cache leakage of the subkey calculation. How to obtain accurate cache leakage is described in Section 5. Our attack exploits two features of the subkey calculation of Blowfish:
In step (3) of the subkey calculation, the input of the first round is the fixed value 0 and the input of the second round is the fixed value
The key recurrently XORs the P-array by 8 bytes.
An attacker can use feature (1) and the cache leakage to construct an equation group for the key. According to whether the equation group has a solution, most of the wrong key guesses can be excluded. Then, the attacker uses feature (2) to XOR the solution sequence output from the leakage equation group with the initial P-box and recovers the key based on periodicity. Specifically, the result calculated by the correct key is periodic; otherwise, it will be not periodic.
Leakage of the S-box and function F
According to Section 2.2, the round function F consists of four S-boxes. Let the input of F be
The input of the S-box is 8 bits, and the output is 32 bits; so, every S-box requires
Constructing the leakage equation group
Because the P-array and S-box used in the encryption of Blowfish are unknown to the attacker, while the initial P-array and S-box used in subkey calculation of Blowfish are public, this section takes the subkey calculation of Blowfish as the target of cache attacks. Blowfish sets the length of the key from 32 bits to 448 bits; so, an attacker can recover the key by recovering
Step (1) of the subkey calculation does not replace the initial S-box. Step (2) encrypts the 64-bit all-zero data using the initial S-box and P-array generated in step (1), and the result is denoted as

Step (2) of subkey calculation.

Step (3) of subkey calculation.
Let
Performing cache attacks for the function F, the attacker can learn the
Note that the input of the first round of the function F is
Let
To eliminate
In Eq. (33),
Then, the attacker exhausts the unknown
Because

Constructing the leakage equation group and solving
Exclude wrong solutions. There may be multiple solutions that satisfy the leakage equation; so, the attacker faces the problem of how to confirm the key in multiple
If
According to this conclusion, the attacker can establish the relationship among

Theoretical model of constructing the leakage equation solution tree.
Recovering the key by periodicity. The attacker must determine the key from all the solutions. At this point, the attacker can exploit the feature (2) of Blowfish, mentioned in Section 3, that is, the key recurrently XORs the initial P-array to generate
Case 1: The length of the key is between 32 and 240 bits. Because the total length of

Recovering short key by periodicity.

Recovering long key by periodicity.
Case 2: The length of the key is between 240 and 448 bits. Owing to the limitations of Blowfish, the length of the key entered by the user is at most 448
Obtaining an accurate cache leakage, the attacker can recover any 32–448 bit variable key of Blowfish by constructing a leakage equation group, solving round keys
The attacker obtains the cache leakage of the subkey calculation via a cache attack;
The attacker constructs the leakage equation group according to the cache leakage and fixed value of the subkey calculation, including 14 leakage equations;
The attacker uses the first leakage equation to calculate
The attacker uses the 2–14 leakage equations to determine
The attacker recovers the key by periodicity.
Our attack does not rely on knowledge of plaintext and ciphertext. An attacker only needs to obtain the cache leakage during the subkey calculation to recover the key, which is very practical.
Cache attack leakage model for S-box
In the cache resource-sharing environment, the attacker can obtain some bits of input or output of an S-box through a cache attack. According to this feature, this section proposes a leakage model for cache attacks, which provides a theoretical basis for estimating the time complexity of cache attacks. This section uses the leakage model to evaluate the time complexity of the cache attack proposed in Section 3.
Probability description of leakage model
After obtaining some bits of input or output of each round S-box by cache attack, the attacker still faces a problem to recover the key:
How does the attacker estimate the time complexity of the attack and evaluate whether the cache attack is feasible for limited computing resources?
To evaluate the time complexity of cache attacks, this section proposes a leakage model. Suppose that the attacker exploits the cache attack to obtain the S-box input of t bits and the output of r bits. In the block cipher, an S-box is a bijective function. Consider that the event A is input X, output

Leakage model.
Let
Let the σ-algebra of all subsets of Ω be
The sample space Ω contains
If
Let
According to properties (1), (2), and (3), we have Proposition 1.
Given
For
According to Proposition 1, when the attacker knows the r bits of output and t bits of input, the expectation of the input number satisfies
Proposition 1 gives the upper bound of the solution number of the leakage model in the average sense. The attacker exhausts the unknown bits of the input
According to Section 3, the function F of Blowfish consists of four known initial S-boxes. Through a cache attack and by constructing the leakage equation group, the attacker can obtain the
According to the conclusions in Sections 3 and 4.1, the time complexity estimation for the cache attack against Blowfish consists of the following parts:
Let the time complexity of steps (1) and (2) of the attack be
In step (3), the attacker must first exhaust the unknown
In step (4), the attacker calculates
The overall time complexity of the attack is estimated to be
Therefore, attackers do not need a lot of computing resources to perform cache attacks against Blowfish. It is entirely possible to complete the attack on a personal laptop.
Application in other block ciphers
In cache sharing environment, attackers always choose S-box of block ciphers as the attack target. Block cipher implementations often use lookup tables to complete S-box. The lookup table of non-lightweight block ciphers must be stored in multiple cache lines, which leads to leakage. If the size of cache line is 64 bytes and an attacker has got cache leakage, the estimation for the S-box input exhausting space of various block ciphers is shown in Table 2.
Comparison of various block ciphers on the estimation of S-box input exhausting space with a cache leakage
Comparison of various block ciphers on the estimation of S-box input exhausting space with a cache leakage
According to the estimation for the S-box input exhausting space, attackers can evaluate whether their computing resources are sufficient to support cache attacks against the specific cipher. If not, the attacker must obtain more cache leakage of encryption to reduce the exhausting space of S-box input. The more leakages an attacker needs, the weaker the attack scenario will be.
The experiments in this section were conducted in Intel(R)Core(TM)i5-8265U CPU with 64-byte cache line and targeted the implementation of Blowfish in OpenSSL 1.1.1h. According to Section 2.1, Blowfish’s S-box is stored in 16 cache lines. We randomly generated a 32-bit key and 448-bit key for the experiment.
First, we entered the OpenSSL folder and found the
We used Flush + Reload and Prime + Probe to obtain the cache leakage. The Flush + Reload attack first used the clflush instruction to clear the S-box of Blowfish out of cache. After waiting for the victim to access, we reloaded the 16 cache lines’ memory addresses sequentially and timing. If the reload time was short(about 30 ns), the victim had accessed the cache line. The Prime + Probe attack first constructed an eviction set for the S-box. Then, we accessed the eviction set and primed it into the cache. After waiting for the victim to access, we probed the eviction set and time again. If the probe time was long (over 300 ns), the victim had accessed the cache line during the wait. To avoid the error of cache attacks, we calculated the access delay by measuring and averaging multiple times. The access delay of the subkey calculation of the Blowfish is shown in Figs 13 and 14.

Flush + Reload attack obtained the cache leakage of the subkey calculation. The unit of delay is milliseconds. The test key is ‘0x54454b49’.

Prime + Probe attack obtained the cache leakage of subkey calculation. The unit of delay is milliseconds. The test key is ‘0x54454b49’.
According to the cache leakage of the subkey calculation, the attacker could obtain the
Intermediate value of subkey calculation of Blowfish via cache attacks, ‘u’ means unknown for the attacker
When
Solutions of the leakage equation group of the 32-bit key ‘0x54454b49’. The six solutions have the same
In order to prove the universality of the attack method, we randomly generated a 448-bit key ‘0x28bbc561bab3d6d9be0309c73dcf1783cc0c8daa97fa4e048895a556fc354aaa35fa7215c17613d158457f6bdbb81eae7617dcc46c7c0090b’. The process of obtaining cache leakages and constructing leakage equation group was the same as above. The detailed process of constructing the leakage equation solution tree was shown in the Appendix. The outputs satisfied all the leakage equations, as shown in Table 5.
Solutions of the leakage equation group of the 448-bit key. The five solutions have the same
After obtaining all the solutions of the leakage equation group, we XORed

Recovering the random 32-bit key.

Recovering the random 448-bit key.

Blowfish encryption in ECB or CBC mode.
Finally, the attacker could recover the variable key of Blowfish in 4 minutes, regardless of the length of the key.
We attempted to extend our attack to applications that use Blowfish as the underlying encryption algorithm. To do this, we found more than 1,000 applications on GitHub which use Blowfish and selected two representative ones, JavaScript-blowfish and Bcrypt, to perform our attack.
JavaScript-blowfish
JavaScript-blowfish (
After the user inputs the key, JavaScript-blowfish performs the subkey calculation of Blowfish. Since JavaScript-blowfish statically stores S-box, it is easy for the attacker to find its memory address, which is the target for cache attacks. Then, the attacker performs Flush + Reload or Prime + Probe attack to obtain cache leakage during the subkey calculation. Afterwards, the attacker utilizes the method in Section 3 to construct the equation group by the fixed values and cache leakage of subkey calculation and can recover the key from the solution space by periodicity.
For the ECB mode of Blowfish, it is easy to recover the plaintext if the attacker recovers the key. Firstly, the ciphertext is divided into 64-byte blocks, and for each 64-bit

Blowfish decryption in ECB or CBC mode.
Overall, in our threat model, our attack can recover the key of JavaScript-blowfish and any message input by users.
Bcrypt (
User Registration: When a user registers, his password needs to be hashed before being stored in the database.
User Login: When a user logs in, his inputted password is compared with the hashed value stored in the database to determine if the password is correct.
Password Reset: When a user forgets their password, Bcrypt can generate a new hashed value for resetting the password.
While MD5, SHA series, and other hash algorithms can also be used for password encryption, they have a common disadvantage, in that the same input generates a constant hash value. This creates opportunities for brute force attacks or Rainbow Table attacks. However, Bcrypt has an important feature: each generated hash value is different. This is because Bcrypt enhances password security by using a random ‘salt’ and iteration count ‘cost’ during the hash calculation process.
Salt: In order to prevent rainbow table attacks, Bcrypt generates a random salt value. The salt value is concatenated with the password before hashing. It consists of 22 printable characters and its purpose is to produce different hash results for the same password under different salt values, thereby increasing the difficulty of password cracking.
Cost: Bcrypt performs multiple iterations of hashing on the password and salt. The number of iterations is determined by the cost value. A higher cost value corresponds to more iterations, which increases the difficulty of password cracking. It is generally recommended to set the cost value to 12, which provides a balance between security and performance.
Bcrypt can be represented as: output = bcrypt(cost, salt, key). The “cost” is the number of iterations, the “salt” is a random value, and the “key” is the password. For attacks, we only focus on the subkey calculation of Bcrypt. Bcrypt utilizes the Blowfish at its core for encryption. Therefore, after the user inputs the key, the subkey calculation is performed as follows:
Initialize the P-array and S-box with the key and perform the subkey calculation of Blowfish, resulting in
Initialize
In our threat model, when a user registers, logs in, or resets his password, Bcrypt will generate a hash value. At the same time, the attacker monitors the memory addresses of the S-box and performs Flush + Reload or Prime + Probe attack to obtain cache leakage. Based on the calculation process of Bcrypt, we divide our attack into two steps:
Performing the attack described in Section 3 on step (1) of Bcrypt to recover the key.
Using the key to computing
At this stage, the only unknown parameter for the attacker is the cost, and he knows that the larger the cost value, the more iterations performs, resulting in a longer execution time of Bcrypt. Therefore, the attacker can utilize a simple timing attack to recover the cost value. We execute Bcrypt 1,000 times with different cost values and calculate the average. The relationship between the cost value and the execution time of Bcrypt is shown in Fig. 19.

Linear relationship between cost value and execution time of Bcrypt.
Therefore, in our threat model, an attacker can utilize cache attacks and timing attacks to obtain all the private parameters of Bcrypt—cost, salt and key, and subsequently calculate the output of Bcrypt, which is stored in the database. This means that the attacker has completely impersonated the user’s identity.
We have studied other applications on GitHub, including Puff-Android, erlang-bcrypt, PHP-Blowfish, python-blowfish, Browsers-Blowfish, PyElliptic, ElnurBlowfishPasswordEncoderBundle, blowfish-csharp, etc. These applications all require a large memory space of 1 KB to store the S-boxes. Therefore, in our threat model, these applications are severely vulnerable to cache attacks. The key of underlying Blowfish is easily recovered by attackers, resulting in serious information leakage.
Discussion
Comparison of cache attack methods
We compare several cache attacks against ciphers. Due to the construction of leakage model and the full use of leakage, our attack does not need any knowledge about plaintext or ciphertext, and only needs a set of accurate cache leakage to recover the key of Blowfish, as shown in Table 6.
Comparison of cache attacks against various ciphers
Comparison of cache attacks against various ciphers
We have summarized countermeasures against cache attacks, categorized into hardware-level and software-level countermeasures.
Another approach is resource randomization. Random permutation cache [26] maintains dynamic and random memory to cache mapping tables for each process to ensure that the accessed set is unpredictable. For example, the CEASER cache [21] proposed by Moinuddin encrypts and remaps the addresses of memory rows, effectively reducing the probability of conflicts caused by cache misses. Later, Moinuddin designed an improved version called CEASER-S [22], which partitions the cache into multiple sets and adopts random placement among these sets, further increasing the uncertainty of memory-to-cache mappings.
The hardware countermeasures have limitations in terms of applicability. For efficiency or other reasons, main CPU manufacturers such as Intel and ARM do not excessively use countermeasures proposed by academia. Even if these measures are implemented, they may still face challenges from improved cache attacks. For instance, a probabilistic cache attack method [24] was proposed in the literature (citation needed), which targeted randomized cache structures and breached the protection offered by CEASER-S.
Unfortunately, software-level countermeasures need to be specifically designed for each algorithm. Unlike AES, which has received significant attention, neither of the aforementioned software countermeasures has been tailored for the Blowfish. Our investigation on GitHub indicates that most applications implementing Blowfish still rely on large lookup tables, making them vulnerable to serious security threats posed by cache attacks.
Conclusions
The results of this study indicate that in the case of Blowfish, key-dependent P-array and S-box do not provide internal protection against side-channel attacks. The attacker does not need any knowledge about plaintext or ciphertext and only needs a set of accurate cache leakage to recover the key. This result indicates that Blowfish is seriously threatened by cache attacks in a resource-sharing scenario, such as the cloud. Our work indicates that, within our threat model, Blowfish faces significant threats from cache attacks. Therefore, we do not recommend using Blowfish in resource-sharing scenarios, such as cloud platforms.
Footnotes
Acknowledgment
This paper is supported by Henan Key Laboratory of Network Cryptography Technology (No. LNCT2020-A03) and National Engineering Laboratory for Big Data Distribution and Exchange Technologies.
Constructing the leakage equation solution tree
The experimental random 32-bit key is ‘0x54454b49’ (Fig. 20) and the random 448-bit key is ‘0x28bbc561bab3d6d9be0309c73dcf1783cc0c8daa97fa4e048895a556fc354aaa35fa7215c17613d158457f6bdbb81eae7617dcc46c7c0090b’ (Fig. 21). The attacker uses the cache leakage of subkey calculation to construct the leakage equation solution tree. When a leakage equation has no solution, it goes back to the previous equation solution. The output solutions of the tree satisfy all leakage equations. The blue line represents the correct path.
