728x90
์ํธ๊ธฐ์ด
์ํธ์ ๋ฑ์ฅ ๋ฐ ์ ์
๋๊ธฐ
- ์ด๋ป๊ฒ ํ๋ฉด ๋ฉ์์ง(๋ฐ์ดํฐ)๋ฅผ ์ํ๋ ์๋๋ฐฉ์๊ฒ ์์ ํ๊ฒ ์ ๋ฌ/์ ์ฅํ ๊น?
- ์ 3์์ ๊ฐ์ ์๋ ๋ฉ์์ง๋ฅผ ์ ์ ๋ฌ/์ ์ฅํ ์ ์๊ฒ ํ๋ ๊ฒ์ด ํ์ → ์ํธ์ ๋ฑ์ฅ
์ํธํ(Cryptography) ์ด๋?
- ์ ๋ณด๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์ํ์ , ์ธ์ดํ์ ์ธ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ ํ๋ฌธ
์ํ ์์ ์ํธ
- ๋น๋ฐ๋ฒํธ
- ์ ์ก ์ ์ํธํ (SSL/TLS)
- ์ํธํํ (Cryptocurrency)
- ์ ์์๊ฑฐ๋
- ๊ณต์ธ์ธ์ฆ์
- ๊ฐ์ธ์ ๋ณด๋ณดํธ๋ฒ
์ํธ ๊ธฐ์ด ์ฉ์ด
- ํ๋ฌธ (Plaing Text, P)
- ์ํธ๋ฌธ (Cipher Text, C)
- ์ํธํ (Encryption, E())
- ๋ณตํธํ (Decryption, D())
- ํค (Key, K)
- ์ํธ ์๊ณ ๋ฆฌ์ฆ (ex. cipher)
์ปค์ฝํ ์์น (Kerckhoffs's Principle)
- ์ํธ ์คํค๋ง์ ์์ ์ฑ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ผ ํค์ ๋น๋ฐ์ฑ์๋ง ์์กดํด์ผ ํ๋ค.
- ํค๋ฅผ ์ ์ธํ ๋ชจ๋ ์ํธ์ฒด๊ณ๊ฐ ์๋ ค์ง๋๋ผ๋ ์ํธ์ฒด๊ณ๋ ์์ ํด์ผ ํ๋ค.
- ์ํธ ํด๋ ์ ์ํด ์์์ผ ํ๋ ์ ๋ณด: ์ํธ(๋ณตํธ) ์๊ณ ๋ฆฌ์ฆ, ํค
์ํธ์ ์ข ๋ฅ
- ์ ์น ์ํธ (Substitution Cipher)
- ์ฌ๋ฐฐ์ด, ์๊ธฐ
- ํ๋ฌธ์ ๋ฌธ์ ์์๋ฅผ ์ฌ๋ฐฐ์ด
- ex) a → b, b → d, c → e
- ์นํ ์ํธ (Permutation Cipher)
- ํ๋ฌธ์ ์ด๋ค ๊ธ์ X๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋์ฒด
๊ณ ๋ ์ํธ
์คํคํ ์ผ ์ํธ
- ๊ณ ๋ ๊ทธ๋ฆฌ์ค ์คํ๋ฅดํ ๊ตฐ๋์์ ๋น๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉํ ์ํธ ๊ธฐ๋ฒ
- ์ ๋ง๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ํต ๋ง๋์ ์ง๋ฆ์ด ๊ณง ์คํคํ ์ผ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ ํค๊ฐ ๋๋ค.
์์ ์ํธ (Caesar Cipher)
- ๋ก๋ง์ ํฉ์ ์๋ ์ค๋ฆฌ์ด์ค ์์ ๊ฐ ์ฌ์ฉํ ์ํธ, ์นํ ์ํธ
- ์ํ๋ฒณ 3์นธ์ฉ ๋ค๋ก ๋ฌผ๋ ค ์ฝ๋ ๋ฐฉ์
- A→D, B →E,... , Z →C
- ํค = ์๊ณ ๋ฆฌ์ฆ
๋น์ฆ๋ค๋ฅด ์ํธ (Vigenere Cipher)
- ์์ ์ํธ ์ ์ฌ ์๊ณ ๋ฆฌ์ฆ + ํค
- ์๊ณ ๋ฆฌ์ฆ: ๊ณต๊ฐ
- ํค: ๋น๊ณต๊ฐ
- key์ ๋ฐ๋ผ shift
< ๊ณ ๋ ์ํธ์ ๋จ์ >
- Brute-Force Attack(์ ์ฌ ๊ณต๊ฒฉ)์ ์ทจ์ฝ → ๋ณด๋ค ์ ๊ตํ ์ํธ๊ธฐ์ ์ด ํ์ํ๊ฒ ๋จ
ํ๋ ์ํธ
๋์นญํค ์ํธ
< ๋์นญํค(Symmetric Key) ์ํธ >
- ์ํธํ ํค == ๋ณตํธํ ํค
- ์.๋ณตํธํ ์์ ์๊ฐ ์งง์, ๊ฐ๋จํ ๊ตฌํ ๋ฐฉ์
- ๋น๋ฐํค ๋ ธ์ถ ์ ์ํธํ๋ ์ ๋ณด ํด๋ ๊ฐ๋ฅ → ํค ๊ด๋ฆฌ ์ค์
- ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ์คํธ๋ฆผ์ํธ์ ๋ธ๋ก์ํธ๋ก ๋๋จ
< XOR (Exclusive OR) ์ฐ์ฐ>
- ๋ฐฐํ์ ๋ ผ๋ฆฌ ์ฐ์ฐ
- ์ํ ๊ธฐํธ: ⊕
- ๊ฐ์ผ๋ฉด 0, ๋ค๋ฅด๋ฉด 1
< ์ผํ์ฉ ํจ๋ (One-time Pad, OTP) >
- ์ ๋ ํด๋ ํ ์ ์๋ ์ํธ
- ๋จ์ํ ์๋ฆฌ : ํ๋ฌธ ⊕ ๋๋ค๋นํธ์ด
- ํ๋ฌธ P, ๋์ ์์ฑ๊ธฐ๋ก ์์ฑ๋ ํค ์คํธ๋ฆผ B →
- ์ํธ๋ฌธ : C = P ⊕ B
- ๋ณตํธ๋ฌธ: D = C ⊕ K
- ๋ ๊ฐ์ง ๋ฌธ์ ์
- ํค ์ฌ์ด์ฆ๊ฐ ๋๋ฌด ํฌ๋ค
- ํค๋ฅผ ํ ๋ฒ๋ง ์ธ ์ ์๋ค
→ ์คํธ๋ฆผ ์ํธ: Pseudorandom Keystram์ nonce๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ ๋ณด์!
< ์คํธ๋ฆผ ์ํธ(Stream Cipher)>
- OTP ๋จ์ ๋ณด์, ์ค์ฉ์ ์ผ๋ก ๊ตฌํํ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ
- Keystream์ ๋นํธ ๋จ์๋ก ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ
- Keystream: long pseudorandom bit stram
- Encryption: XOR the keystream with the plaintext
- Key → Key Stram (KS)
- KS = SC(K,N)
- K: ์งง์ ํค
- N: Nonce
- OTP: ๋์ ์คํธ๋ฆผ(RNG)
- Stream Cipher: ์์ฌ๋์ ์คํธ๋ฆผ(PRNG)
< ๋ธ๋ก ์ํธ (Block Cipher) >
- ํ๋์ ํ๋ฌธ์ ๋ธ๋ก ๋จ์๋ก ๋๋์ด ์ํธํ/๋ณตํธํ ์ํ
- ์ด๋, ํ ๋ธ๋ก์ ํฌ๊ธฐ๋ฅผ n์ด๋ผ๊ณ ํ๋ค.
- ์ํธ ์์ฉ์ ์์ด ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ๋์นญ ์ํธ ์๊ณ ๋ฆฌ์ฆ
- ์ข ๋ฅ: DES, Triple DES, AES, ARIA, SEED
- ๋ฉ์ปค๋์ฆ: n ๋นํธ์ ํ๋ฌธ ๋ธ๋ก์ m ๋นํธ์ ๋งค๊ฐ๋ณ์(ํค)๋ฅผ ์ด์ฉํ์ฌ n ๋นํธ์ ๋ธ๋ก์ ์ถ๋ ฅ
- ๊ตฌ์กฐ: ECB, CBC, S-box, P-box, Feistel, SPN(Substitution-Permutation Network)
- P = P1 || P2 || P3 ||.... || Pm
- C = E(k, P), P = D(k, C)
- |P| = |C|
DES | Triple DES | AES |
- n=64, k=56 - 16 ๋ผ์ด๋์ ํ์ด์คํ ์ฐ์ฐ ์ํ |
- DES๋ 1998๋
์ bruteforce๋ฅผ ์ฌ์ฉํ์ฌ 56์๊ฐ ๋ง์ ํด๋
, 1999๋
์๋ 22์๊ฐ ์์ ํด๋
- ๋ฐ๋ผ์ Triple DES ๊ฐ๋ฐ (์ํธํ ํค 2๊ฐ ์ฌ์ฉ) |
- DES ๋์ฒด - Feistel ๋์ SPN ์ฐ์ฐ ์ฌ์ฉ - ์ข ๋ฅ: AES-128, AES-192, AES-256 ํค ๊ธธ์ด: 128, 192, 256 ๋ธ๋ก ๊ธธ์ด: 128 ๋ผ์ด๋: 10, 12, 14 |
< ๋์นญํค ์์คํ ์ ํ๊ณ: ํค ๋ถ๋ฐฐ ๋ฌธ์ >
- ๊ฐ ์ฌ์ฉ์ Pair(์ก์ ์ - ์์ ์)๋ง๋ค ํค๋ฅผ ์์ ํ๊ฒ ๊ณต์ ํด์ผ ํ๋ค.
๊ณต๊ฐํค(๋น๋์นญํค) ์ํธ
< ๊ณต๊ฐํค ์ํธ(Public Key Encryption) >
- ์ํธํ ํค ≠ ๋ณตํธํ ํค
- ํค 2๊ฐ: ๊ณต๊ฐํค(Public Key, pk), ๋น๋ฐํค(Secret Key, sk)
- ์ํธํ ํจ์: Enc(P, K)
- ๋ณตํธํ ํจ์: Dec(C, K)
- ์ข ๋ฅ: RSA, ElGamal, ECC, ์ ์์๋ช (Digital signature)
< Certification Authority (CA) >
- Pa๊ฐ Alice์ ๊ณต๊ฐํค๋ผ๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ณด์ฅ? → CA
- ํค ๋ถ๋ฐฐํด ์ฃผ๋ ๊ณต์ ๊ธฐ๊ด → Geotrust ๋ฑ
- ๋ชจ๋๊ฐ ์ ๋ขฐ, Trusted organization
- CA๋ก๋ถํฐ ๋ฐํํ ์ธ์ฆ์(Root ์ธ์ฆ์)๋ ์ฐ๋ฆฌ์ ๋ธ๋ผ์ฐ์ ์, ์ธ์ฆ์์ ๋ํ ๊ณต๊ฐํค๋ ์ธ์ฆ์ ๋ด๋ถ์ ์ด๋ฏธ ํฌํจ๋์ด ์๋ค.
< ๋ํผ-ํฌ๋ง ํค ๊ตํ (Diffie-Hellman Key Exchange) >
- a์ Bob์ ๊ณต๊ฐํค, b์ Alice์ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํ์ฌ ๋ ์ฌ์ด ๋น๋ฐํค(๋์ผ)๋ฅผ ๊ฐ์ ๊ณ์ฐ
- 1976๋
์ ์๋ ๋น๋ฐ ํค ๊ตํ ๋ฐฉ๋ฒ (not encryption scheme)
- ๊ธฐ์ด์ ์ธ ์ํธํ์ ํต์ ๋ฐฉ๋ฒ์ ์๋ฆฝ
- ์ดํ RSA, Elgamal์ ์ํฅ
- ์ด์ฐ๋ก๊ทธ๋ฌธ์ (Discrete Logarithm Problem)์ ์ด๋ ค์ ์ด์ฉ
- g, x, p๋ฅผ ์๋ฉด y๋ ๊ตฌํ๊ธฐ ์ฝ์ง๋ง, g, p, y๋ฅผ ์๋ฉด x๋ฅผ ๊ตฌํ๊ธฐ๋ ์ด๋ ต๋ค.
- Alice๊ฐ Bob์๊ฒ ์์ p, 1๋ถํฐ p-1 ์ฌ์ด์ ์ ์ g ๊ณต๊ฐ
- Alice๋ ์์๋ก ์ ์ a ์ ํ, ์ด๋ a๋ Alice๋ง ์๊ณ ์์
- Bob์๊ฒ A = g^a(mod p)๋ฅผ ๋ง์กฑํ๋ A ์ ๋ฌ
- Bob์ ์์๋ก ์ ์ b ์ ํ, ์ด๋ b๋ Bob๋ง ์๊ณ ์์
- Alice์๊ฒ B = g^b(mod p)๋ฅผ ๋ง์กฑํ๋ B ์ ๋ฌ
- Alice๋ p์ B, ๊ทธ๋ฆฌ๊ณ ์์ ๋ง ์๊ณ ์๋ a๋ก๋ถํฐ Ka = B^a(mod p)๋ฅผ ๋ง์กฑํ๋ Ka๋ฅผ ๊ณ์ฐ
- Bob์ p์ A, ๊ทธ๋ฆฌ๊ณ ์์ ๋ง ์๊ณ ์๋ b๋ก๋ถํฐ Kb = A^b(mod p)๋ฅผ ๋ง์กฑํ๋ Kb๋ฅผ ๊ณ์ฐ
→ Ka = Kb = g^ab(mod p)
< RSA >
- By Ronald Rivest, Adi Shamir, Leonard Adleman
- 1977๋ ์ ๋ฐํ๋ ์ฒซ ๋ฒ์งธ ๊ณต๊ฐํค ์ํธํ ๋ฐฉ
- ์ ์ ๊ฑฐ๋, ๊ธ์ต ๊ฑฐ๋, ์ธ์ฆ์ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ
- ์์ ์ฑ: ์ฐ์ฐ์ ๋ณต์ก์ฑ(์ธ์๋ถํด ๋ฌธ์ ์ ์ด๋ ค์)์์ ๊ธฐ๋ฐ
- prime factorization problem
- ์์ฃผ ํฐ ๋ ์์์ ๊ณฑ์ผ๋ก ์ด๋ฃจ์ด์ง ํฉ์ฑ์๋ฅผ ์ธ์๋ถํดํ๊ธฐ ์ด๋ ต๋ค
- ์ฐ์ฐ์ด ๋ง๊ณ ๋คํธ์ํฌ ํต์ ์์๋ ์ ์ฌ์ฉ๋์ง ์์
< ํ์ ๊ณก์ ํจ์ ECC >
- Eliptic Curve Cryptography (ํ์๊ณก์ ์ํธ)
- ํ์๊ณก์ ์ด๋ก ์ ๊ธฐ๋ฐํ ๊ณต๊ฐํค ์ํธ ๋ฐฉ์
- RSA์ ๋นํด ์์ ํค ํฌ๊ธฐ๋ก ๋น์ทํ ๋ณด์์ฑ ์ ๊ณต
- RSA Key 1024 bit ๋ณด์์ฑ := ECC Key 160 bit ๋ณด์์ฑ
- ์ํธํ/๋ณตํธํ ์๋ ๋น ๋ฆ
- ์ํธํํ, ์์ ํ๋์จ์ด ๋ฑ์ ์ฌ์ฉ
ํด์ ํจ์(Hash Function)
- ๋ฉ์์ง๋ฅผ ๊ธธ์ด๊ฐ ์ ํด์ง ์งง์ ๊ฐ์ผ๋ก ๋ณํ/์์ถํ ๊ฐ
- ์ ๋ ฅ ๋ฉ์์ง ๊ธธ์ด์ ์๊ด์์ด, ์ ํด์ง ๊ณ ์ ๋ ๊ธธ์ด์ ์ถ๋ ฅ ๊ฐ
- ์
๋ ฅ ๋ฉ์์ง๊ฐ 1bit๋ง ๋ฌ๋ผ๋ ์ ํ ๋ค๋ฅธ ํด์๊ฐ์ ๋์ถํ๋ค.
- Collision-free
- Collision-resistance
- one-wayness
- preimage resistance
- ์ข ๋ฅ: MD5, SHA1, SHA-256, SHA-384.... ๋ฑ
- ๋ฉ์์ง์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธ ๊ฐ๋ฅํ๋ ์ธ์ฆ ๋ฌธ์ ๋ ์ฆ๋ช ๋ถ๊ฐ
< ๋ฉ์์ง ์ธ์ฆ ์ฝ๋ (MAC) >
- Message Authentication Code
- Hash + ์ธ์ฆ์ ์ํ Key
- ๊ฒฐ๊ด๊ฐ ๊ธธ์ด ๊ณ ์
- ํจ์ ๊ณ์ฐ์ ์ถ๊ฐ์ ์ธ Key ํ์ํ๋ค
- ์ก. ์์ ์ ๊ฐ ํค ๊ณต์ ์ฌ์ ์ ํ์
< MAC์ ํ๊ณ >
- ํค ๋ถ๋ฐฐ ๋ฌธ์ → ๋์นญํค ์ฌ์ฉ์ผ๋ก ์ธํ ๋ฌธ์
- ์ 3์์ ๋ํ ์ฆ๋ช
๋ฐ ๋ถ์ธ๋ฐฉ์ง ๋ถ๊ฐ
- ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ฌ๋ ๊ฐ ๋์ผํ ํค๋ฅผ ๊ณต์ ํ๊ณ ์๊ธฐ ๋๋ฌธ
→ ์ ์ ์๋ช (Digital Signature)์ ๋ฑ์ฅ
์ ์ ์๋ช (Digital Signature)
- ๊ณต๊ฐํค ๊ธฐ๋ฐ
- ์๋ณธ ๋ฉ์์ง(์ ๋ฐ์ดํฐ)๋ฅผ ๋ณด๋ด๋ ์ฌ๋(์๋ช ์)์ ๊ฐ์ธํค๋ก ์ํธ
์ฐจ์ธ๋ ์ํธ
- Shor ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ฅ → ๊ณต๊ฐํค ์ํธ ์ํ
- Grover ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ฅ → ๋์นญํค ์ํธ, ํด์ ํจ์ ์ํ
โถ ์์ ๋ด์ฑ ์ํธ, ๋ํ ์ํธ, ์์ ์ํธ, ํํ๋ณด์กด ์ํธ ๋ฑ ๊ฐ๋ฐ ์ค
์์ ๋ด์ฑ ์ํธ (PQC)
- ๊ฒฉ์ ๊ธฐ๋ฐ (Lattice-based)
- ์ฝ๋ ๊ธฐ๋ฐ (Code-based)
- ๋ค๋ณ์ ๊ธฐ๋ฐ (Multi-variate)
- ํด์ ๊ธฐ๋ฐ (Hash-based)
- ์์ด์์ ๋ ๊ธฐ๋ฐ (Isogeny-based)
๋ํ ์ํธ
- Fully Homomorphic Encryption
- ์ํธ๋ฌธ์ ์ด์ฉํ์ฌ ๊ณ์ฐํ ์ ์๊ฒ ํ๋ ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์
- ์ํธํ๋ ๋ฐ์ดํฐ๋ก ๊ณ์ฐ → ๋ณตํธํ → ์ ๋ฐ์ดํฐ๋ก ๊ณ์ฐํ ๊ฐ๊ณผ ์ผ์น
- ๊ตญ๋ด์์ ์ ์ ํ(Ring) ๊ธฐ๋ฐ์ ๋ํ์ํธ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐ
์์ ์ํธ
- Quantum Cryptography
- ์์์ ํน์ฑ์ ์ด์ฉํ ์ํธํ ๋ฐฉ์
- ๋ถํ์ ์ฑ
- ์ค์ฒฉ
- ์ฝํ
- ๋น๊ฐ์ญ์ฑ
ํํ ๋ณด์กด ์ํธ
- Format Preserving Encryption
- ํ๋ฌธ์ ํํ๋ฅผ ์ ์งํ ์ํธ๋ฌธ
- ๋ํ์ํธ์ ๋น์ท (๊ณ์ฐ)
- ๋ฐ์ดํฐ์ ๊ธธ์ด ๋ณด์กด
- ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ ๊ตฌ๋งค ๋ถํ์
- DB ์คํค๋ง ๋ณ๊ฒฝ ๋ถํ์
- ์ ์ฉ์นด๋, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฌํ๋ณด์ฅ๋ฒํธ(SSN)์ ์ํธํ์ ์ฌ์ฉ ๊ฐ
์ค์ต
- ๋๋ฆผํต – Basic_Crypto1 • https://dreamhack.io/wargame/challenges/517
- H4CKING GAME - ROX • https://h4ckingga.me/challenges#ROX-38
- ๋๋ฆผํต - ICM2022 • https://dreamhack.io/wargame/challenges/686
์ถ์ฒ
• 21-1 ์ดํ์ฌ๋ ๋์ธ์ค ๊ต์๋์ ‘์ฌ์ด๋ฒ๋ณด์๊ฐ๋ก ’ ๊ฐ์์๋ฃ • https://daporang.tistory.com/35
• ์ค์๋ ๊ต์๋ ํ๋์ํธ๊ธฐ์ด 1์ฃผ ์ฐจ ๊ฐ์์๋ฃ
• ๋์
• ํ๋ก์ ์ ํค, ใ์๊ธฐ ์ฌ์ด ์ ๋ณด๋ณดํธ๊ฐ๋ก ใ, ์ธํผ๋ํฐ๋ถ์ค
• ์ฅ์ผ์ฉ, ใํ์ดํธํด์ปค๋ฅผ ์ํ ์ํธ์ ํดํนใ, ์ ๋ณด๋ฌธํ์ฌ • ์ต์๋ฏธ, ใ์ํธ๋ก ใ, ๋ถ์คํ
• ๋์ค ํผ๊ฑฐ์จ ์ธ, ใ์ค์ฉ์ํธํใ, ์์ด์ฝ
'E-COPS > 14th ๋น๊ธฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. ๋์งํธ ํฌ๋ ์ (2) | 2024.09.12 |
---|---|
4. ์์คํ ํดํน (2) | 2024.09.12 |
2. ๋คํธ์ํฌ ๋ณด์ (2) | 2024.09.01 |
1. ์น ๋ณด์ (0) | 2024.08.29 |