μ΄κΈμ Pratical Cryptograpy for developers μ μλ λ΄μ©μ λ²μν κΈμ λλ€.[μλ¬Έ]
νλ μνΈν κ°μ ( Overview of Modern Cryptography )
μνΈνλ μ΅μ΄μ μλ(μμ²λ
μ )μμ μμ λμ΄μ
κ°λ°μλ₯Ό μν μ΅μ΄μ μ±κ³΅μ μΈ μνΈν μκ³ λ¦¬μ¦(νμ¬λ μν΄ν MD5 λ° DESμ κ°μ)μ ν΅ν΄
μ΅μ μνΈν μκ³ λ¦¬μ¦(SHA-3, Argon2 λ° ChaCha20κ³Ό κ°μ)μΌλ‘ λ°μ νμ΅λλ€.
λ¨Όμ κ°λ¨ν μκ° νλ©΄ μνΈν ν΄μ κΈ°λ₯(SHA-256, SHA3, RIPEMD λ±), HMAC(ν΄μ λ©μμ§ μΈμ¦ μ½λ), ν€ νμ κΈ°λ₯μ λν μνΈ(μ: Scrypt), Diffie-Hellman ν€ κ΅ν νλ‘ν μ½, λμΉ ν€ μνΈν 체κ³(μ: CBC λ° CTR λΈλ‘ λͺ¨λλ₯Ό μ¬μ©νλ AES μνΈ) λ° κ³΅κ° λ° κ°μΈ ν€λ₯Ό μ¬μ©νλ λΉλμΉ ν€ μνΈν 체κ³(μ: RSA μνΈ λ° νμ 곑μ κΈ°λ° μνΈν/ECC, secp256k1 곑μ λ° Ed25519 μνΈ μμ€ν ), λμ§νΈ μλͺ λ° ECDSA, μνΈλ‘νΌ λ° μμ ν λμ μμ± λ° μμ μμ μνΈμ κ°λ λ± μμ΅λλ€.
μνΈνλ 무μμ λκΉ? (What is Cryptography?)
μνΈνλ 보μ λ° μ 보 보νΈλ₯Ό μ 곡νλ κ³Όνμ
λλ€.
κ·Έκ²μ λμ§νΈ μΈκ³μ λͺ¨λ κ³³μμ μ¬μ©λ©λλ€.
μΉ μ¬μ΄νΈλ₯Ό μ΄κ±°λ μ΄λ©μΌμ 보λ΄κ±°λ WiFi λ€νΈμν¬μ μ°κ²°ν λμ
λλ€.
κ·Έλ κΈ° λλ¬Έμ κ°λ°μλ μνΈνμ λν κΈ°λ³Έμ μΈ μ΄ν΄μ μνΈν μκ³ λ¦¬μ¦ λ° μνΈν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ λ°©λ², ν΄μ±, λμΉ/λΉλμΉ μνΈ λ° μνΈν 체κ³, λμ§νΈ μλͺ
, μνΈν μμ€ν
λ° μκ³ λ¦¬μ¦μ μ΄ν΄ν΄μΌ ν©λλ€.
μνΈν λ° ν€ (Encryption and Keys)
μνΈνλ λ°μ΄ν°λ₯Ό μμ ν λ°©μμΌλ‘ μ μ₯νκ³ μ μ‘νλ μμ μ μ²λ¦¬νλ―λ‘ μλλ μ¬λλ§ λ°μ΄ν°λ₯Ό μ½κ³ μ²λ¦¬ν μ μμ΅λλ€. μ¬κΈ°μλ νλ μ΄μμ ν€λ₯Ό μ¬μ©νμ¬ μΌλ° νμμμ μνΈνλ νμμΌλ‘ λλ κ·Έ λ°λλ‘ λ°μ΄ν°λ₯Ό λ³ννλ λμΉ λλ λΉλμΉ μνΈν 체κ³λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μνΈν λ° ν΄λ νλ μμ μ΄ ν¬ν¨λ μ μμ΅λλ€.
AES, Twofish λ° ChaCha20κ³Ό κ°μ λμΉ μνΈνλ λμΌν ν€λ₯Ό μ¬μ©νμ¬ λ©μμ§λ₯Ό μνΈν λ° ν΄λ
νλ λ°λ©΄,
λΉλμΉ μνΈνλ κ³΅κ° ν€ μνΈ μμ€ν
(RSA λλ ECCμ κ°μ)κ³Ό ν€ μ(κ³΅κ° ν€(μνΈν ν€) λ° ν΄λΉ κ°μΈμ©)μ μ¬μ©ν©λλ€.
ν€(볡νΈν ν€). μνΈν μκ³ λ¦¬μ¦μ μ’
μ’
μνΈν 체κ³(μ: AES-256-CTR-HMAC-SHA-256, ChaCha20-Poly1305 λλ ECIES-secp256k1-AES-128-GCM)μμ κ²°ν©λ©λλ€.
μνΈνλ ν€(ν° λΉλ° λ²νΈ)λ₯Ό λ€λ£¨λ©° λ§μ μλ리μ€μμ μ΄λ¬ν ν€λ ν€ νμ μκ³ λ¦¬μ¦(μ: PBKDF2 λ° Scrypt)μ μ¬μ©νμ¬ μ«μ, μνΈ λλ μνΈμμ νμλ©λλ€.
λμ§νΈ μλͺ λ° λ©μμ§ μΈμ¦ (Digtal Signatures and Message Authentication)
μνΈνλ λ©μμ§ μ§μ, λ¬΄κ²°μ± λ° λΆμΈ λ°©μ§λ₯Ό 보μ₯νλ λ©μμ§μ λμ§νΈ μλͺ
μλ¨μ μ 곡ν©λλ€.
λλΆλΆμ λμ§νΈ μλͺ
μκ³ λ¦¬μ¦(μ: DSA, ECDSA λ° EdDSA)μ λΉλμΉ ν€ μ(κ°μΈ λ° κ³΅κ° ν€)μ μ¬μ©ν©λλ€.
λ©μμ§λ κ°μΈ ν€λ‘ μλͺ
λκ³ μλͺ
μ ν΄λΉ κ³΅κ° ν€λ‘ νμΈλ©λλ€.
μν μμ€ν
μμ λμ§νΈ μλͺ
μ κ²°μ μ μλͺ
νκ³ μΉμΈνλ λ° μ¬μ©λ©λλ€.
λΈλ‘μ²΄μΈ μλͺ
κ±°λμμ μ¬μ©μλ ν μ£Όμμμ λ€λ₯Έ μ£Όμλ‘ λΈλ‘μ²΄μΈ μμ°μ μ μ‘ν μ μμ΅λλ€.
μνΈνλ λ©μμ§ μΈμ¦ μκ³ λ¦¬μ¦(μ: HMAC) λ° λ©μμ§ μΈμ¦ μ½λ(MAC μ½λ)λ₯Ό μ²λ¦¬νμ¬ λ©μμ§ μ§μ, λ¬΄κ²°μ± λ° μ μλ₯Ό μ¦λͺ
ν©λλ€.
보μ ν΅μ μ 보μ₯νκΈ° μν΄ μΈμ¦μ΄ μνΈνμ ν¨κ» μ¬μ©λ©λλ€.
보μ λμ (Secure Random Numbers)
μνΈνλ λμλ₯Ό μ¬μ©νκ³ μνΈλ‘νΌ(μμΈ‘ν μ μλ μμμ±)λ₯Ό μ²λ¦¬νκ³ λμμ μμ ν μμ±(μ: CSPRNG μ¬μ©)μ μ²λ¦¬ν©λλ€.
μμ ν λμλ λ³Έμ§μ μΌλ‘ μμΈ‘ν μ μμΌλ©° λμ μμ±κΈ°κ° μμλλ©΄ μμ€ν
μ΄λ μ±μ΄ μμλκ±°λ ν΄νΉλκΈ° λλ¬Έμ κ°λ°μλ μ΄μ μ£Όμν΄μΌ ν©λλ€.
ν€ κ΅ν (Key exchange)
μνΈνλ μνΈνλ₯Ό μ¬μ©νμ¬ λ©μμ§λ₯Ό μμ νκ² μ μ‘νλ €λ λ λΉμ¬μ κ°μ μνΈν ν€λ₯Ό μμ νκ² μ€μ νλ λ°
μ¬μ©λλ ν€ κ΅ν μκ³ λ¦¬μ¦(μ: Diffie-Hellman ν€ κ΅ν λ° ECDH) λ° ν€ μ€μ 체κ³λ₯Ό μ μν©λλ€.
μ΄λ¬ν μκ³ λ¦¬μ¦μ μΌλ°μ μΌλ‘ λ λΉμ¬μ κ°μ μλ‘μ΄ λ³΄μ μ°κ²°μ΄ μ€μ λ λ μνλ©λλ€.
μ΅μ μΉ μ¬μ΄νΈλ₯Ό μ΄κ±°λ WiFi λ€νΈμν¬μ μ°κ²°ν λ κ°μ κ²½μ° μ¬μ© λ©λλ€.
μνΈν ν΄μ λ° λΉλ°λ²νΈ ν΄μ± ( Cryptographic Hashes and Password Hashing )
μνΈνλ λ©μμ§λ₯Ό λ©μμ§ λ€μ΄μ μ€νΈ(κ³ μ κΈΈμ΄μ ν΄μ)λ‘ λ³ννλ μνΈν ν΄μ κΈ°λ₯(μ: SHA-3 λ° BLAKE2)μ μ 곡ν©λλ€.
μ΄ κΈ°λ₯μ μλ λ©μμ§λ‘ λλ릴 μ μμΌλ©° μ
λ ₯μ κ±°μ κ³ μ νκ² μλ³ν©λλ€.
μλ₯Ό λ€μ΄ λΈλ‘μ²΄μΈ μμ€ν
μμ ν΄μλ λΈλ‘μ²΄μΈ μ£Όμ, νΈλμμ
ID λ° κΈ°ν λ§μ μκ³ λ¦¬μ¦κ³Ό νλ‘ν μ½μ μμ±νλ λ° μ¬μ©λ©λλ€.
Git μνΈν ν΄μλ νμΌ λ° μ»€λ°μ λν κ³ μ IDλ₯Ό μμ±νλ λ° μ¬μ©λ©λλ€.
μνΈ ν΄μ± λ° μνΈ ν€ νμ κΈ°λ₯(μ: Scrypt λ° Argon2)μ ν
μ€νΈ κΈ°λ° μνΈμμ ν΄μ(λλ ν€)λ₯Ό μμ νκ² νμνκ³
μμ λ§€κ° λ³μ(Salt)λ₯Ό μ£Όμ
νκ³
λ§μ μνΈ ν¬λνΉ μλλ₯Ό λ¦μΆκΈ° μν λ°λ³΅(Iteration) λ° μ»΄ν¨ν
리μμ€λ₯Ό μ¬μ© ν©λλ€..
μνΈνμ νΌλκ³Ό νμ° ( Confusion and Diffusion in Cryptography )
μνΈνμμ ν΄μ±, μνΈν μκ³ λ¦¬μ¦ λ° λλ€ μμ±κΈ°λ Shannonμ νΌλ(Confusion) λ° νμ°(Diffusion) μμΉμ λ°λ¦
λλ€.
νΌλμ μΆλ ₯ νμμ κ° λΉνΈκ° μνΈκ° ν€ λ° μ
λ ₯ λ°μ΄ν°μ μ¬λ¬ λΆλΆμ μμ‘΄ν΄μΌ νλ―λ‘ μ§μ 맀νμ μ€μ ν μ μμμ μλ―Έν©λλ€. νμ°μ μ
λ ₯μμ ν λΉνΈλ₯Ό λ³κ²½νλ©΄ μΆλ ₯μμ λΉνΈμ μ½ μ λ°μ΄ λ³κ²½λμ΄μΌ ν¨μ μλ―Έν©λλ€.
μ΄λ¬ν μμΉμ λλΆλΆμ ν΄μ ν¨μ, MAC μκ³ λ¦¬μ¦, λμ μμ±κΈ°, λμΉ λ° λΉλμΉ μνΈμ μ¬μ© λ©λλ€.
μνΈν λΌμ΄λΈλ¬λ¦¬ ( Cryptographic Libraries )
κ°λ°μλ νλ‘κ·Έλλ° μΈμ΄ λ° νλ«νΌμ λν νλ μνΈν λΌμ΄λΈλ¬λ¦¬μ μ΄λ₯Ό μ¬μ©νλ λ°©λ²μ μμμΌ ν©λλ€.
μνΈνλ₯Ό μ¬μ©νμ¬ κ°λ°νλ €λ©΄ μνΈν κ°λ
μ μ΄ν΄ν΄μΌ ν©λλ€.
μΈν°λ·μμ μ½λλ₯Ό 볡μ¬/λΆμ¬λ£κΈ°νκ±°λ λΈλ‘κ·Έμ μλ₯Ό λ°λ₯΄λ©΄ μμ νμ§ μμ λμμΈκ³Ό μ·¨μ½ν 보μμ΄ λ°μν μ μμ΅λλ€.
μνΈν λΌμ΄λΈλ¬λ¦¬λ λ§€μ° μ μ©νμ§λ§ λ¨Όμ κ°λ
μ μ΄ν΄ν λ€μ
μ μ ν μκ³ λ¦¬μ¦ μ‘°ν©μ μ ννκ³ λ§€κ°λ³μλ₯Ό μ μ€νκ² μ‘°μ ν΄μΌ ν©λλ€.
'PKI > Cryptography' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λΈλ‘ μνΈ μ΄μ λͺ¨λ ( Block Cipher mode of operation ) (0) | 2024.08.28 |
---|---|
DH μκ³ λ¦¬μ¦μ΄λ (0) | 2024.06.28 |
EdDSA μκ³ λ¦¬μ¦ Ed25519 κ³Ό Ed448μ κ΄νμ¬ (0) | 2023.06.15 |
X.509 μΈμ¦μ λ°κΈ νλ‘ν μ½ ( CMP, SCEP κ·Έλ¦¬κ³ CSR ) μ’ λ₯ (0) | 2023.05.18 |
RSA ν€ κΈΈμ΄κ° 1λ°μ΄νΈ μ°¨μ΄ λλ μ΄μ (0) | 2023.05.16 |