diff --git a/content/Basic Cryptography/AES.md b/content/Basic Cryptography/AES.md new file mode 100644 index 0000000..1393923 --- /dev/null +++ b/content/Basic Cryptography/AES.md @@ -0,0 +1,67 @@ +## Intro +AES (Advanced Encryption Standard) is the most common [[Symmetric key encryption]] algorithm, which utilizes a block cipher. Unlike [[DES]], the AES algorithm does not use a [[Feistel network]], enabling more parallelization. The length of the key used in AES can be 128 bits, 192 bits, or 256 bits, and can be represented as AES-128, AES-192, and AES-256. Each version also has a different number of rounds, which are 10, 12, and 14 rounds, respectively. In addition, every version of AES uses the same block size, which is 128 bits. AES works on a $4 \times 4$ block array, where each $b_a$ represents 1 byte of the block. + +$$ +\left[ +\begin{matrix} +b_0 & b_1 & b_2 & b_3 \\ +b_4 & b_5 & b_6 & b_7 \\ +b_8 & b_9 & b_{10} & b_{11} \\ +b_{12} & b_{13} & b_{14} & b_{15} \\ +\end{matrix} + +\right] + +$$ + +## Design +High-level description of AES is as following: +1. KeyExpansion +2. For the initial round + - AddRoundKey +3. For the other rounds(9, 11, 13 rounds) + - SubBytes + - ShiftRows + - MixColumns + - AddRoundKey +4. For the final round + - SubBytes + - ShiftRows + - AddRoundKey + +### KeyExpansion +The KeyExpansion step generates round keys to be used in each round. In the case of AES-128, KeyExpansion takes a 128-bit key as input and expands it into a 44-word array, with each word being 32 bits. Every 4 words(128 bits) are used as a round key in each round, which means that AES-128 uses 11 round keys. AES-192 and AES-256 uses 13 and 15 round keys respectively. Every round keys are also represented as below. +$$ +\left[ +\begin{matrix} +k_0 & k_1 & k_2 & k_3 \\ +k_4 & k_5 & k_6 & k_7 \\ +k_8 & k_9 & k_{10} & k_{11} \\ +k_{12} & k_{13} & k_{14} & k_{15} \\ +\end{matrix} + +\right] + +$$ + + +### AddRoundKey +The AddRoundKey step is a simple bitwise XOR operation between the state array and a round key. The state array is a $4 \times 4$ plaintext array at the first round, which is manipulated during the encryption process. Each round key is derived from the original encryption key through the KeyExpansion process. This step is important because adding the key to the state provides the security of encryption. + +### SubBytes +The SubBytes step substitutes each byte with another byte according to a 8-bit substitution box(Sbox). The S-box provides non-linearity properties, leveraging multiplicative inverse over [[Finite Field|GF]]($2^8$). +![[Pasted image 20240730214809.png]] + +### ShiftRows +The ShiftRows step is a transposition step where the rows of the state array are shifted in certain offset cyclically to the left. The first row is left unchanged, the second row is shifted one byte to the left, the third row is shifted two bytes to the left, and the fourth row is shifted three bytes to the left. This step helps in **diffusion** by mixing the positions of the bytes in each row. +![[Pasted image 20240730214817.png]] + +### MixColumns +The MixColumns step is a mixing operation that operates on the columns of the state array. Each column is treated as a four-term polynomial and multiplied by a fixed polynomial +$c(z)={03}_{16}\cdot z^{3}+{01}_{16}\cdot z^{2}+{01}_{16}\cdot z+{02}_{16}$ modulo $x^4 + 1$. More generally, this step can be represented as below. + +![[Pasted image 20240730220004.png]] + +This step provides **diffusion** by mixing the bytes within each column, ensuring that the output bytes are influenced by multiple input bytes. + +![[Pasted image 20240730214827.png]] diff --git a/content/Basic Cryptography/Public key cryptography.md b/content/Basic Cryptography/Asymmetric key encryption.md similarity index 97% rename from content/Basic Cryptography/Public key cryptography.md rename to content/Basic Cryptography/Asymmetric key encryption.md index 194b4ec..c5fc8ee 100644 --- a/content/Basic Cryptography/Public key cryptography.md +++ b/content/Basic Cryptography/Asymmetric key encryption.md @@ -55,3 +55,7 @@ 4. [[Elliptic Curves#Elliptic Curve Cryptography]] ECC(타원 곡선 암호)는 이산 로그 문제 중 타원 곡선에 기반한 [[ECDLP]](Elliptic Curve Discrete Logarithm Problem)을 기반으로 하는 시스템이다. 다른 프로토콜에 비해 비교적 작은 길이의 키를 사용하면서 높은 수준의 보안성을 제공하기 때문에 제한된 자원을 가진 모바일이나 블록체인과 같은 환경에서 널리 사용된다. + +## Comparison with [[Symmetric key encryption]] +Refer to [[Symmetric key encryption#Comparison with Asymmetric key encryption]] + diff --git a/content/Basic Cryptography/Basic Cryptography.md b/content/Basic Cryptography/Basic Cryptography.md index 45e2694..e82ff02 100644 --- a/content/Basic Cryptography/Basic Cryptography.md +++ b/content/Basic Cryptography/Basic Cryptography.md @@ -2,8 +2,11 @@ > [[Basic Cryptography]] introduces the fundamental principles and techniques of cryptography. This includes basic encryption and decryption methods, and the principles behind key cryptographic algorithms such as symmetric and asymmetric encryption. -- [[Public key cryptography]] -- [[Symmetric key cryptography]] +- [[Asymmetric key encryption]] +- [[Symmetric key encryption]] +- [[AES]] +- [[Block cipher]] +- [[Stream cipher]] - [[Diffie-Hellman]] - [[RSA]] - [[ElGamal]] diff --git a/content/Basic Cryptography/Block cipher.md b/content/Basic Cryptography/Block cipher.md new file mode 100644 index 0000000..4eb3bec --- /dev/null +++ b/content/Basic Cryptography/Block cipher.md @@ -0,0 +1,34 @@ +## Intro +A block cipher is an encryption algorithm used in symmetric key encryption that encrypts plaintext in fixed-size blocks. The block size depends on the algorithm, but the length of the plaintext can be variable because block ciphers utilize modes of operation, which will be explained below. A block cipher can also be abstracted as a [[Pseudo-random Function]] where the message space is n bits and the key space is k bits. + +![[Pasted image 20240730165247.png]] + +## Design +![[Pasted image 20240730172248.png]] +The basic flow of block cipher encryption is as follows: + +1. Expand the key into $r$ round keys via key expansion. +2. Apply each round key sequentially using the round function. +3. Output the ciphertext $c$. + +The implementation of the round function and key expansion depends on the specific algorithm. Typically, in the round function, building blocks such as substitution, transposition, shift, and swap are used to satisfy [[Confusion and Diffusion]]. + +## Mode of Operation +If the length of the plaintext to be encrypted is longer than the block size, a mode of operation can be used. The mode of operation defines the methods to securely use a single key multiple times. There are two types of modes of operation: + +| Confidentiality only | Authenticated Encryption with Additional Data(AEAD) | +| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| - ECB(Electric Codebook)
- CBC(Cipher-block Chaining)
- CFB(Cipher Feedback)
- OFB(Output Feedback)
- CTR(Counter) | - GCM(Galois counter)
- CCM(Counter with cipher block chaining message authentication code)
- SIV(Synthetic initialization vector)
- AES-GCM-SIV | + +## Comparison with [[Stream cipher]] +| | [[Stream Cipher]] | Block Cipher | +| ---------------- | ------------------------------------- | ----------------------------------------------------- | +| Processing Unit | Bit/Byte | Block of data | +| Key type | Generated for each bit/byte | Single key used for multiple rounds | +| Implementation | Simpler, often used in hardware | More complex, often used in software | +| Use Case | Real-time applications, low latency | File encryption, data at rest | +| Speed | Typically faster | Typically slower | +| Padding Required | Not required | Required if data does not fit block size | +| Security | Key reuse can lead to vulnerabilities | More secure with proper padding and mode of operation | +| Example | RC4, Salsa20, ChaCha20 | AES, DES, Blowfish | + diff --git a/content/Basic Cryptography/Stream cipher.md b/content/Basic Cryptography/Stream cipher.md new file mode 100644 index 0000000..2d34342 --- /dev/null +++ b/content/Basic Cryptography/Stream cipher.md @@ -0,0 +1,18 @@ +## Intro +Stream cipher is a method of encrypting data where each bit or byte of the plaintext is encrypted sequentially, one at a time, using a corresponding bit or byte from a key stream. This approach differs from block ciphers, which encrypt fixed-size blocks of data. Stream ciphers are often used in scenarios requiring high-speed encryption and where data is transmitted in a continuous stream. + +## Design +![[Pasted image 20240730173718.png]] +TODO(yuki) + +## Types of stream ciphers +### Synchronous Stream Ciphers +In synchronous stream ciphers, the key stream is generated independently of the plaintext and ciphertext. An internal state to generate the pseudorandom sequence(key stream) is maintained and used to generate new internal states. +To decrypt the plaintext correctly, the sender and receiver must be synchronized to ensure the key streams match during encryption and decryption. If a bit is lost or an erroneous bit is added due to transmission errors, decryption will fail from that point onward and re-synchronization will be needed. + +### Asynchronous Stream Ciphers +In synchronous stream ciphers, the key stream is generated based on the previous ciphertext bits, not on the previous internal state. Thus, if a bit is changed or lost during transmission, only a portion of the decryption will fail. + + +## Comparison with [[Block cipher]] +Refer to [[Block cipher#Comparison with Stream cipher]] diff --git a/content/Basic Cryptography/Symmetric key encryption.md b/content/Basic Cryptography/Symmetric key encryption.md new file mode 100644 index 0000000..6fb1907 --- /dev/null +++ b/content/Basic Cryptography/Symmetric key encryption.md @@ -0,0 +1,32 @@ +## Intro +Symmetric encryption is a method of encryption that uses the same key for both encryption and decryption. Since encryption and decryption are performed with a single key, it is crucial that this key is not exposed to anyone outside. For this reason, it is also known as secret key encryption. +An important aspect of symmetric encryption is key management. This includes generating keys securely, distributing them safely, and ensuring they are stored in a manner that prevents unauthorized access. + +## Types +Symmetric encryption can be divided into block cipher and stream cipher. +- [[Block cipher]]: Encrypts plaintext in fixed-size blocks. +- [[Stream cipher]]: Encrypts plaintext bit by bit or byte by byte. + +## Examples +The most well-known example of symmetric encryption is [[AES]](Advanced Encryption Standard). There are also methods like DES(Data Encryption Standard), which has known vulnerabilities. + +## Use cases +Symmetric encryption is used in various real-world applications such as TLS/SSL for secure web communication, file encryption, and database encryption. For example, in TLS 4.0, symmetric encryption schemes such as [[ChaCha20]] or AES256 are used for encryption. + +## Comparison with [[Asymmetric key encryption]] +| | Symmetric key encryption | [[Asymmetric key encryption]] | +| ---------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------- | +| Key type | Single key for both encryption and decryption | Public key for encryption, private key for decryption | +| Speed | Faster | Slower | +| Key distribution | Requires secure channel | No need for secure channel (Public key can be shared openly, secret key remains private) | +| Non-repudiation | X | O | +| Example | [[AES]], DES | [[RSA]], [[ElGamal]], [[ECDSA]] | +| # of keys | $N\choose 2$ for $N$ people | $2N$ for $N$ people | + + + + + + + + diff --git a/content/Basic Cryptography/images/Excalidraw/Block cipher drawing.md b/content/Basic Cryptography/images/Excalidraw/Block cipher drawing.md new file mode 100644 index 0000000..d4eb473 --- /dev/null +++ b/content/Basic Cryptography/images/Excalidraw/Block cipher drawing.md @@ -0,0 +1,90 @@ +--- +excalidraw-plugin: parsed +tags: + - excalidraw +draft: "true" +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' + + +# Excalidraw Data +## Text Elements +Plaintext ^mkMzafMa + +Ciphertext ^95yWyj8l + +Key ^CSoABc2j + +Encryption & Decryption +Algorithm ^gcXyAA3t + +## Embedded Files +fc8551656b13d3cdb8f5eee8412edf270a2592b8: $$\{0, 1\}^n +$$ +ead043ca1b10a95228a9dcb2b4b7a6fa28f62d6c: $$\{0, 1\}^n +$$ +28180c1dd2d4cfb3f81e69ce361ccc651b112248: $$\{0, 1\}^k +$$ + +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git a/content/Basic Cryptography/imgaes/diffie_hellman.png b/content/Basic Cryptography/images/diffie_hellman.png similarity index 100% rename from content/Basic Cryptography/imgaes/diffie_hellman.png rename to content/Basic Cryptography/images/diffie_hellman.png diff --git a/content/Basic Cryptography/imgaes/public_key(1).png b/content/Basic Cryptography/images/public_key(1).png similarity index 100% rename from content/Basic Cryptography/imgaes/public_key(1).png rename to content/Basic Cryptography/images/public_key(1).png diff --git a/content/Basic Cryptography/imgaes/public_key(2).png b/content/Basic Cryptography/images/public_key(2).png similarity index 100% rename from content/Basic Cryptography/imgaes/public_key(2).png rename to content/Basic Cryptography/images/public_key(2).png diff --git a/content/Basic Cryptography/imgaes/public_key(3).png b/content/Basic Cryptography/images/public_key(3).png similarity index 100% rename from content/Basic Cryptography/imgaes/public_key(3).png rename to content/Basic Cryptography/images/public_key(3).png diff --git a/content/Basic Cryptography/imgaes/public_key(4).png b/content/Basic Cryptography/images/public_key(4).png similarity index 100% rename from content/Basic Cryptography/imgaes/public_key(4).png rename to content/Basic Cryptography/images/public_key(4).png diff --git a/content/Basic Cryptography/imgaes/public_key(5).png b/content/Basic Cryptography/images/public_key(5).png similarity index 100% rename from content/Basic Cryptography/imgaes/public_key(5).png rename to content/Basic Cryptography/images/public_key(5).png diff --git a/content/Pasted image 20240730163028.png b/content/Pasted image 20240730163028.png new file mode 100644 index 0000000..11028cd Binary files /dev/null and b/content/Pasted image 20240730163028.png differ diff --git a/content/Pasted image 20240730165247.png b/content/Pasted image 20240730165247.png new file mode 100644 index 0000000..1c075fa Binary files /dev/null and b/content/Pasted image 20240730165247.png differ diff --git a/content/Pasted image 20240730172248.png b/content/Pasted image 20240730172248.png new file mode 100644 index 0000000..f2c9f19 Binary files /dev/null and b/content/Pasted image 20240730172248.png differ diff --git a/content/Pasted image 20240730173718.png b/content/Pasted image 20240730173718.png new file mode 100644 index 0000000..38b4a6d Binary files /dev/null and b/content/Pasted image 20240730173718.png differ diff --git a/content/Pasted image 20240730214809.png b/content/Pasted image 20240730214809.png new file mode 100644 index 0000000..b63837e Binary files /dev/null and b/content/Pasted image 20240730214809.png differ diff --git a/content/Pasted image 20240730214817.png b/content/Pasted image 20240730214817.png new file mode 100644 index 0000000..58d78af Binary files /dev/null and b/content/Pasted image 20240730214817.png differ diff --git a/content/Pasted image 20240730214827.png b/content/Pasted image 20240730214827.png new file mode 100644 index 0000000..34ab417 Binary files /dev/null and b/content/Pasted image 20240730214827.png differ diff --git a/content/Pasted image 20240730220004.png b/content/Pasted image 20240730220004.png new file mode 100644 index 0000000..6be5eed Binary files /dev/null and b/content/Pasted image 20240730220004.png differ