From 12c82449fa00faab8ae9799763293fecc59632d1 Mon Sep 17 00:00:00 2001 From: Sungchan Yi Date: Tue, 17 Oct 2023 10:36:02 +0900 Subject: [PATCH] [PUBLISHER] upload files #102 * PUSH NOTE : 2. PRFs, PRPs and Block Ciphers.md * PUSH ATTACHMENT : mc-02-block-cipher.png * PUSH ATTACHMENT : mc-02-feistel-network.png * PUSH ATTACHMENT : mc-02-des-round.png * PUSH ATTACHMENT : mc-02-DES.png * PUSH ATTACHMENT : mc-02-aes-128.png * PUSH ATTACHMENT : mc-02-2des-mitm.png --- .../2023-09-12-prfs-prps-block-ciphers.md | 300 ++++++++++++++++++ .../Modern Cryptography/mc-02-2des-mitm.png | Bin 0 -> 18855 bytes .../Modern Cryptography/mc-02-DES.png | Bin 0 -> 16092 bytes .../Modern Cryptography/mc-02-aes-128.png | Bin 0 -> 27919 bytes .../mc-02-block-cipher.png | Bin 0 -> 16278 bytes .../Modern Cryptography/mc-02-des-round.png | Bin 0 -> 15576 bytes .../mc-02-feistel-network.png | Bin 0 -> 7181 bytes 7 files changed, 300 insertions(+) create mode 100644 _posts/Lecture Notes/Modern Cryptography/2023-09-12-prfs-prps-block-ciphers.md create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-2des-mitm.png create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-DES.png create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-aes-128.png create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-block-cipher.png create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-des-round.png create mode 100644 assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-feistel-network.png diff --git a/_posts/Lecture Notes/Modern Cryptography/2023-09-12-prfs-prps-block-ciphers.md b/_posts/Lecture Notes/Modern Cryptography/2023-09-12-prfs-prps-block-ciphers.md new file mode 100644 index 0000000..a66140f --- /dev/null +++ b/_posts/Lecture Notes/Modern Cryptography/2023-09-12-prfs-prps-block-ciphers.md @@ -0,0 +1,300 @@ +--- +share: true +toc: true +math: true +categories: + - Lecture Notes + - Modern Cryptography +tags: + - lecture-note + - cryptography + - security +title: 2. PRFs, PRPs and Block Ciphers +date: 2023-09-12 +github_title: 2023-09-12-prfs-prps-block-ciphers +image: + path: assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-block-cipher.png +attachment: + folder: assets/img/posts/Lecture Notes/Modern Cryptography +--- + +## Pseudorandom Functions (PRF) + +> **Definition.** A **pseudorandom function** $F$ over $(\mathcal{K}, X, Y)$ is an efficiently computable algorithm $F : \mathcal{K} \times X \rightarrow Y$. + +We consider a *keyed function* $F : \mathcal{K} \times X \rightarrow Y$ where $\mathcal{K}$ denotes the key space. For $k \in \mathcal{K}$, $F_k(x) := F(k, x)$ is a function from $X$ to $Y$. Thus each key $k$ induces a distribution on functions $X \rightarrow Y$. + +Note that $\left\lvert \mathcal{F}[X, Y] \right\lvert = \left\lvert Y \right\lvert^{\left\lvert X \right\lvert}$, but the number of PRFs is at most $\left\lvert K \right\lvert$. In practice, $\left\lvert K \right\lvert$ is very small compared to $\left\lvert Y \right\lvert^{\left\lvert X \right\lvert}$. So PRFs are chosen from a smaller space, but they should behave in the same way a (truly) random function does. + +Let $\mathcal{F}[X, Y]$ denote the set of all functions from $X$ to $Y$. A PRF $F$ would be **secure** if it is **indistinguishable from a random function in $\mathcal{F}[X, Y]$**. This notion is formalized as a security game. + +> **Definition.** Let $F$ be a PRF defined over $(\mathcal{K}, X, Y)$. For an adversary $\mathcal{A}$, define two experiments 0 and 1. +> +> **Experiment $b$**. +> 1. The challenger selects $f \in \mathcal{F}[X, Y]$ as follows +> - If $b = 0$, choose $k \leftarrow \mathcal{K}$ and set $f = F_k = F(k, \cdot)$. +> - If $b = 1$, choose $f \leftarrow \mathcal{F}[X, Y]$. +> 2. The adversary sends a sequence of queries to the challenger. +> - For $i = 1, \dots, q$, send $x_i \in X$ and receive $y_i = f(x_i) \in Y$. +> 3. The adversary computes and outputs a bit $b' \in \left\lbrace 0, 1 \right\rbrace$. +> +> Let $W_b$ be the event that $\mathcal{A}$ outputs 1 in experiment $b$. Then the **PRF-advantage** of $\mathcal{A}$ with respect to $F$ is defined as +> +> $$ +> \mathrm{Adv}_{\mathrm{PRF}}^q[\mathcal{A}, F] = \left\lvert \Pr[W_0] - \Pr[W_1] \right\lvert. +> $$ +> +> A PRF $F$ is **secure** if $\mathrm{Adv}_{\mathrm{PRF}}^q[\mathcal{A}, F]$ is negligible for any efficient $\mathcal{A}$. + +In experiment $0$ above, the challenger returns $y_i = f(x_i)$. To answer the query $x_i$, the challenger would have to keep a lookup table for a random function $f \in \mathcal{F}[X, Y]$. Since $X$ and $Y$ are very large in practice, it is nearly impossible to create and manage such lookup tables.[^1] As a workaround, we can choose $y_i$ uniformly on each query $x_i$, assuming that $x_i$ wasn't queried before. This is possible since for any different inputs $x_i, x_j \in X$, $f(x_i)$ and $f(x_j)$ are random and independent. + +Also, there are two ways that the adversary can query the challenger. The first method is the **adaptive** method, where the adversary queries each $x_i$ one by one. In this method, the adversary can *adaptively* choose the next query $x_{i+1}$ after receiving the result from the challenger. + +The second method is querying all $x_i$ at once. We will consider the first method, since the adaptive method assumes greater attack power on the adversary. + +### OTP as a PRF + +As an example, consider the one-time pad function $F(k, x) = k \oplus x$. This function satisfies the definitions of PRFs, but it is not a secure PRF. Consider an adversary $\mathcal{A}$ that outputs $1$ if and only if $y_1 \oplus y_2 = x_1 \oplus x_2$. In experiment $0$, $\mathcal{A}$ will always output $1$, but in experiment $1$, $\mathcal{A}$ will output $1$ with probability $2^{-n}$. Thus the advantage is $1 - 2^{-n}$, which is not negligible. + +### PRFs and PRGs + +It is easy to construct PRGs from PRFs. We can simply evaluate $F$ on some distinct inputs. For example, given a seed $s$, we evaluate $F_s$ and obtain + +$$ +G(s) = F_s(1) \parallel F_s(2) \parallel \cdots \parallel F_s(n) +$$ + +for any $n \in \mathbb{N}$.[^2] In fact, we can show that $G$ is secure PRG if $F$ is a secure PRF. + +> **Theorem.** If $F$ is a secure length preserving PRF, then $G$ in the above definition is a secure PRG. + +*Proof*. Suppose that $\mathcal{A}$ is an efficient PRG adversary against $G$. We construct an efficient $n$-query PRF adversary $\mathcal{B}$, that queries the challenger at $1, \dots, n$ and receives $f(1), \dots, f(n)$. $\mathcal{B}$ passes $f(1) \parallel \cdots \parallel f(n)$ to $\mathcal{A}$, and $\mathcal{B}$ outputs the output of $\mathcal{A}$. Then we see that $\mathrm{Adv}_{\mathrm{PRG}}[\mathcal{A}, G] = \mathrm{Adv}_{\mathrm{PRF}}[\mathcal{B}, F]$. So if $F$ is secure, then $G$ is secure. + +As for the converse, a PRG $G$ gives a PRF $F$ with small input length. If $G : \left\lbrace 0, 1 \right\rbrace^n \rightarrow \left\lbrace 0, 1 \right\rbrace^{n 2^m}$, we can define a PRF $F : \left\lbrace 0, 1 \right\rbrace^n \times \left\lbrace 0, 1 \right\rbrace^m \rightarrow \left\lbrace 0, 1 \right\rbrace^n$ as follows: for a seed $s \in \left\lbrace 0, 1 \right\rbrace^n$, consider $G(s)$ as a $2^m \times n$ table and set $F(s, i)$ as the $i$-th row of $G(s)$.[^3] If $G$ is a secure PRG, then PRF $F$ is also secure. + +## Pseudorandom Permutations (PRP) + +> **Definition.** A **pseudorandom permutation** $E$ over $(\mathcal{K}, X)$ is an efficiently computable algorithm $E : \mathcal{K} \times X \rightarrow X$ that has an efficient inversion algorithm $D$ such that $D(k, E(k, x)) =x$. + +Permutations defined on a set $X$ are bijections on $X$, so a PRP $E(k, \cdot)$ is one-to-one for all $k \in \mathcal{K}$, and also has an inverse function. + +Similarly, a PRP $E$ is **secure** if it is **indistinguishable from a random permutation on $X$**. Let $\mathcal{P}[X]$ denote the set of all permutations on $X$. + +> **Definition.** Let $E$ be a PRP defined over $(\mathcal{K}, X)$. For an adversary $\mathcal{A}$, define two experiments $0$ and $1$. +> +> **Experiment $b$**. +> 1. The challenger selects $f \in \mathcal{P}[X]$ as follows +> - If $b = 0$, choose $k \leftarrow \mathcal{K}$ and set $f = E_k = E(k, \cdot)$. +> - If $b = 1$, choose $f \leftarrow \mathcal{P}[X]$. +> 2. The adversary sends a sequence of queries to the challenger. +> - For $i = 1, \dots, q$, send $x_i \in X$ and receive $y_i = f(x_i) \in Y$. +> 3. The adversary computes and outputs a bit $b' \in \left\lbrace 0, 1 \right\rbrace$. +> +> Let $W_b$ be the event that $\mathcal{A}$ outputs 1 in experiment $b$. Then the **PRP-advantage** of $\mathcal{A}$ with respect to $E$ is defined as +> +> $$ +> \mathrm{Adv}_{\mathrm{PRP}}^q[\mathcal{A}, E] = \left\lvert \Pr[W_0] - \Pr[W_1] \right\lvert. +> $$ +> +> A PRP $E$ is **secure** if $\mathrm{Adv}_{\mathrm{PRP}}^q[\mathcal{A}, E]$ is negligible for any efficient $\mathcal{A}$. + +### PRF Switching Lemma + +Suppose that $\left\lvert X \right\lvert$ is sufficiently large. Then for $q$ queries of any adversary $\mathcal{A}$, it is highly probable that $f(x_i)$ are all distinct, regardless of whether $f$ is a PRF or a PRP. Thus we have the following property of PRPs. + +> **Lemma.** If $E: \mathcal{K} \times X \rightarrow X$ is a secure PRP and $\left\lvert X \right\lvert$ is sufficiently large, then $E$ is also a secure PRF. +> +> For any $q$-query adversary $\mathcal{A}$, +> +> $$ +> \left\lvert \mathrm{Adv}_{\mathrm{PRF}}[\mathcal{A}, E] - \mathrm{Adv}_{\mathrm{PRP}}[\mathcal{A}, E] \right\lvert \leq \frac{q^2}{2\left\lvert X \right\lvert}. +> $$ + +This is a matter of *collisions* of $f(x_i)$, so we use the facts from the birthday problem. + +*Proof*. Appendix A.4. + +## Block Ciphers + +A **block cipher** is actually a different name for PRPs. Since a PRP $E$ is a keyed function, applying $E(k, x)$ is in fact encryption, and applying its inverse is decryption. + +![mc-02-block-cipher.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-block-cipher.png) + +Block ciphers commonly have the following form. +- A key $k$ is chosen uniformly from $\left\lbrace 0, 1 \right\rbrace^s$. +- The key $k$ goes through *key expansion* and generates $k_1, \dots, k_n$. These are called **round keys**, where $n$ is the number of rounds. +- The plaintext goes through $n$ rounds, where in each round, a round function and the round key is applied to the input. +- After $n$ rounds, the ciphertext is obtained. + +## Data Encryption Standard (DES) + +### Brief History + +- 1972: NIST calls for a block cipher standard (proposal). +- 1974: Horst Feistel (IBM) designs *Lucifer*, which evolves into DES. +- 1976: DES is standardized and widely implemented. +- 1997: DES is broken by exhaustive search. +- 2001: DES is replaced by AES. + +### Feistel Network + +Since block ciphers are PRPs, we have to build an invertible function. Suppose we are given **any** functions $F_1, \dots, F_d : \left\lbrace 0, 1 \right\rbrace^n \rightarrow \left\lbrace 0, 1 \right\rbrace^n$. Can we build an **invertible** function $F : \left\lbrace 0, 1 \right\rbrace^{2n} \rightarrow \left\lbrace 0, 1 \right\rbrace^{2n}$? + +![mc-02-feistel-network.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-feistel-network.png) + +It turns out the answer is yes. Given an $2n$-bit long input, $L_0$ and $R_0$ denote the left and right halves ($n$ bits) of the input, respectively. Define + +$$ +L_i = R_{i-1}, \qquad R_i = F_i(R_{i-1}) \oplus L_{i-1} +$$ + +for $i = 1, \dots, d$. Then we can restore $L_0$ and $R_0$ from $L_d$ and $R_d$ by applying the same operations in **reverse order**. It is easy to see that $R_{i-1}$ can be restored from $L_i$. As for $L_{i-1}$, we need a swap. Observe that + +$$ +F_i(L_i) \oplus R_i = F_i(R_{i-1}) \oplus (F_i(R_{i-1}) \oplus L_{i-1}) = L_{i-1}. +$$ + +Note that we did not require $F_i$ to be invertible. We can build invertible functions from arbitrary functions! These are called **Feistel networks**. + +> **Theorem.** (Luby-Rackoff'85) If $F : K \times \left\lbrace 0, 1 \right\rbrace^n \rightarrow \left\lbrace 0, 1 \right\rbrace^n$ is a secure PRF, then the $3$-round Feistel using the functions $F_i= F(k_i, \cdot)$ is a secure PRP. + +In DES, the function $F_i$ is the DES round function. + +![mc-02-des-round.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-des-round.png) + +The Feistel function takes $32$ bit data and divides it into eight $4$ bit chunks. Each chunk is expanded to $6$ bits using $E$. Now, we have 48 bits of data, so apply XOR with the key for this round. Next, each $6$-bit block is compressed back to $4$ bits using a S-box. Finally, there is a permutation $P$ at the end, resulting in $32$ bit data. + +### DES Algorithm + +DES uses $56$ bit keys that generate $16$ rounds keys. The diagram below shows that DES has 16-round Feistel networks. + +![mc-02-DES.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-DES.png) + +The input goes through initial/final permutation, which are inverses of each other. These have no cryptographic significance, and just for engineering. + +## Advanced Encryption Standard (AES) + +DES is not secure, since key space and block length is too small. Thankfully, we have a replacement called the **advanced encryption standard** (AES). + +![mc-02-aes-128.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-aes-128.png) + +- DES key only had $56$ bits, so DES was broken in the 1990s +- NIST standardized AES in 2001, based on Rijndael cipher +- AES has $3$ different key lengths: $128$, $192$, $256$ + - Different number of rounds for different key lengths + - $10$, $12$, $14$ rounds respectively +- Input data block is $128$ bits, so viewed as $4\times 4$ table of bytes + - This table is called the **current state**. + +Each round consists of the following: +- **SubBytes**: byte substitution, 1 S-box on every byte +- **ShiftRows**: permutes bytes between groups and columns +- **MixColumns**: mix columns by using matrix multiplication in $\mathrm{GF}(2^8)$. +- **AddRoundKey**: XOR with round key + +### Modules + +#### SubBytes + +- A simple substitution of each byte using $16 \times 16$ lookup table. +- Each byte is split into two $4$ bit *nibbles* + - Left half is used as row index + - Right half is used as column index + +#### ShiftRows + +- A circular bytes shift for each row, so it is a permutation +- $i$-th row is shifted $i$ times to the left. ($i = 0, 1, 2, 3$) + +#### MixColumns + +- For each column, each byte is replaced by a value + - The value depends on all 4 bytes of the column +- Each column is processed separately + - Thus effectively, it is a matrix multiplication (Hill cipher) + +#### AddRoundKey + +- XOR the input with $128$ bits of the round key + - The round key is different for each round + +These 4 modules are all invertible! + +## Attacks on Block Ciphers + +### DES S-box + +For DES, the S-box is the non-linear part. If the S-box is linear, then the entire DES cipher would be linear. + +Specifically, there would be a fixed binary matrix $B _ 1 \in \mathbb{Z} _ 2^{64 \times 64}$ and $B _ 2 \in \mathbb{Z} _ 2^{64 \times (48 \times 16)}$ such that + +$$ +\mathrm{DES}(k, m) = B_1 m \oplus B_2 \mathbf{k} +$$ + +where $\mathbf{k} \in \mathbb{Z}_2^{48 \times 16}$ is a vector of round keys. + +Then we can attack DES with the same idea as OTP. If $c_i = B_1 m_i \oplus B_2 \mathbf{k}$, then $c_1 \oplus c_2 = B_1 (m_1 \oplus m_2)$. + +Choosing the S-boxes at random results in a insecure block cipher, with high probability. + +### Strengthening Ciphers Against Exhaustive Search + +For DES (and AES-128), it is known that *three pairs of plaintext, ciphertext blocks* are enough to ensure that there is a *unique* key mapping the given plaintext to the ciphertext, with high probability. We assume here that we are given plaintext, ciphertext block pairs. + +If we were to find the key by brute force, DES is easy. We can strengthen the DES algorithm by using **nested ciphers**. The tradeoff here is that these are slower than the original DES. + +> Define +> - (**2DES**) $2E: \mathcal{K}^2 \times \mathcal{M} \rightarrow \mathcal{M}$ as $2E((k_1, k_2), m) = E(k_1, E(k_2, m))$. +> - (**3DES**) $3E: \mathcal{K}^3 \times \mathcal{M} \rightarrow \mathcal{M}$ as $3E((k_1, k_2, k_3), m) = E(k_1, D(k_2, E(k_3, m)))$.[^4] + +Then the key space has increased (exponentially). As for 2DES, the key space is now $2^{112}$, so maybe nested ciphers increase the level of security. + +#### $2E$ is Insecure: Meet in the Middle + +Unfortunately, 2DES is only secure as DES, with the attack strategy called **meet in the middle**. The idea is that if $c = E(k_1, E(k_2, m))$, then $D(k_1, c) = E(k_2, m)$. + +![mc-02-2des-mitm.png](../../../assets/img/posts/Lecture%20Notes/Modern%20Cryptography/mc-02-2des-mitm.png) + +Since we have the plaintext and the ciphertext, we first build a table of $(k, E(k_2, m))$ over $k_2 \in \mathcal{K}$ and sort by $E(k_2, m)$. Next, we check if $D(k_1, c)$ is in the table for all $k_1 \in \mathcal{K}$. + +The complexity of this attack is shown as follows: +- Space complexity: We must store $\left\lvert \mathcal{K} \right\lvert$ entries with approximately $\log \left\lvert \mathcal{M} \right\lvert$ bits. Thus we need $\left\lvert \mathcal{K} \right\lvert \log \left\lvert \mathcal{M} \right\lvert$ bits in total. +- Time complexity: We run $E$ for $\left\lvert \mathcal{K} \right\lvert$ times and sorting takes $\left\lvert \mathcal{K} \right\lvert \log \left\lvert \mathcal{K} \right\lvert$. Searching the decrypted messages will also take $\left\lvert \mathcal{K} \right\lvert \log \left\lvert \mathcal{K} \right\lvert$.[^5] + +Considering DES, $\left\lvert \mathcal{K} \right\lvert = 2^{56}$ and $\left\lvert \mathcal{M} \right\lvert = 2^{64}$, the search space for the key is far less than $2^{112}$. Moreover, one would need a huge amount of memory to perform this attack, but time and space can be traded off. + +3DES can be attacked in a similar manner, so the search space for the key is less than $2^{168}$, around $2^{112}$. It is currently infeasible to brute force this, so 3DES is used in practice. + +The above argument can be generalized for any scheme $(E, D)$. Thus, the $2E$ construction is not secure. + +#### $EX$ Construction and DESX + +There is another method called the **$EX$ construction** for block cipher $(E, D)$ defined over $(\mathcal{K}, \mathcal{X})$. The $EX$ construction uses a new block cipher defined as follows. Intuitively, it can be thought of as applying OTP before and after encryption. + +> Let $k_1 \in \mathcal{K}$ and $k_2, k_3 \in \mathcal{X}$. +> - Encryption: $EX\left((k_1, k_2, k_3), m\right) = E(k_1, m \oplus k_2) \oplus k_3$. +> - Decryption: $DX((k_1, k_2, k_3), c) = D(k_1, c \oplus k_3) \oplus k_2$. + +Then the new cipher $(EX, DX)$ has a key space $\mathcal{K} \times \mathcal{X}^2$, which is much larger than $\mathcal{K}$. Specifically for DESX, the key length would be $56 + 2 \times 64 = 184$ bits. + +As a side note, using $E(k_1, m) \oplus k_2$ or $E(k_1, m \oplus k_2)$ does not improve security, since it can be attacked with meet in the middle method. Similarly, DESX also has $184$ bit key space, but actual search space is about $56 + 64 = 120$ bits. + +### Attacks on AES + +The best known attack on AES is almost a brute force attack. +- AES-128 requires $2^{126.1}$ evaluations of AES.[^6] +- AES-192 requires $2^{189.74}$ evaluations of AES. +- AES-256 requires $2^{254.42}$ evaluations of AES. + +These are about $4$ times better than exhaustive search, so they have little impact on the security of AES. + +There are also attacks with quantum computers, which uses an algorithm that can recover the key in time $\mathcal{O}(\sqrt{\left\lvert \mathcal{K} \right\lvert})$.[^7] We might need to use AES-256 when quantum computers are widely used. + +[^1]: The size of the lookup table is at least $\left\lvert X \right\lvert \log \left\lvert Y \right\lvert$ bits. The table should have at least $\left\lvert X \right\lvert$ rows, and each row must contain $\log \left\lvert Y \right\lvert$ bits of information. +[^2]: This method is even *parallelizable*! +[^3]: Note that $m$ has to be $\mathcal{O}(\log n)$ for $F$ to be efficient. +[^4]: We could also encrypt $3$ times. +[^5]: The running times of $E$ and $D$ were not considered here. +[^6]: A. Bogdanov, D. Khovratovich, and C. Rechberger. Biclique cryptanalysis of the full AES. In ASIACRYPT 2011, pages 344–371. 2011. +[^7]: L. K. Grover. A fast quantum mechanical algorithm for database search. In Proceedings of the twenty-eighth annual ACM symposium on Theory of computing, pages 212–219. ACM, 1996. diff --git a/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-2des-mitm.png b/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-2des-mitm.png new file mode 100644 index 0000000000000000000000000000000000000000..d95519ea5b7e9f0a7e714e2fdf99023e46feee66 GIT binary patch literal 18855 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 literal 0 HcmV?d00001 diff --git a/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-DES.png b/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-DES.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5c0d52bcde0be2fb3783bd503d169b1840805f GIT binary patch literal 16092 zcmd6ObySq!*YD6uNtcvJD5;cm2q>*c4DpZ(0wc)K9U|Q=AR#Tt08&GDmx3^K4M+?n zI3j%?zTe+n>%Qy$^WOW{%UUeXbI#uTv-juh6SLsi~={sHk}L>XnFy$ou#2M@B}7h=^=#Y%VS? zhK7cWjEvaW*y!l!GBPq+T3S?8RJ66VmzS6S{{6eLu`w_(Kut{@5D*|EBU4&h%E!lN zU|@hiAc~5LUcY|L&CSih!Lh%;pP!!}85s!xfU~o6M@L6OLc;j?cu!A{uCDIm$B&bf zlP4!9?d|Ow8yn5d&BevVeSLjHLqk-%ihE`V=>Wsofp0oX7fO2F+ z!mWXbd*@)2g9tr{q|*8O5TUG0-kSpF$~$-oM1(U(^MNWWeMl-wNje@xOINMOT*~k5 zrP$X%gzc}tJ(Kp1bv?8Vd;LhZ^-+{#KD&S9W>fr4wtDfwBBV{+f2724bEg{G_5@LZ zrO`V8E-y^Mgo2}I`< z%O%QdUnCp!DMa)&pi97LjMs`%={6=D?J?hLkT7Nn^!qixT0Z7^9qBj#*NWTNC-0x? zNhNwt9dKF=_e~mgD_=P|Uo90uDA&ZFqffti11HVYNe|1IDmjCZ2En~s6Kgw zR=SfEe<>D!_sG1jwiu-2_bGl1Oc5un3y=QuJv2Ol@$Q)p+{-z%I%TfQdZh4v} z;b}-hojD-iQIt!itu3wa=abcyrw~UNgr>Qyzdhv@Xy`*)45pZttgsZvZEbxUSAjP{ zsrD>4-eH6qg{Svc;0Vn`(MHjSt=sFtYE{qRSAMU_IzC_ZF0hD#8mMU7KhI26)lh2Y zI{Z0A_-1x0V&anNO#>0gF0S_s64#uHql!DeG%6owx#-2|9S&)(k_E}tNb5 )XSV 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-aes-128.png b/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-aes-128.png new file mode 100644 index 0000000000000000000000000000000000000000..f91fb1b201f7523fc2c069a4d2fe15be1ed0814e GIT binary patch literal 27919 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 literal 0 HcmV?d00001 diff --git a/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-des-round.png b/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-des-round.png new file mode 100644 index 0000000000000000000000000000000000000000..be7e7d0c6a019878691277810ad88ecd06f13281 GIT binary patch literal 15576 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 literal 0 HcmV?d00001 diff --git a/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-feistel-network.png b/assets/img/posts/Lecture Notes/Modern Cryptography/mc-02-feistel-network.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fbbe533442c35c9d9434be96b6c5e725d9c277 GIT binary patch literal 7181 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