μλ
νμΈμ. ICOREPORTμ @sanghyun μ
λλ€.
λΉνΈμ½μΈμλ μ¬λ¬ λ°©λ²μ μνΈνκ° μ¬μ©λ©λλ€. κ·Έ μ€μμ ν€ κ°λ€μ μνΈν μν€λ λ°©λ²μΈ νμ 곑μ μνΈνμ λν΄ κΈμ μ¨λ³΄λλ‘ νκ² μ΅λλ€.
λ³Έ μλ£λ 1λΆ,2λΆλ‘ λλμ΄μ Έ μμΌλ©° 1λΆλ νμ 곑μ μνΈνλ₯Ό λ°°μ°κΈ°μ μλ°μ μ λλ‘ μκ°νμλ©΄ λ κ²κ°μ΅λλ€. 2λΆλ λΉ λ₯Έ μμΌ λ΄λ‘ νμ 곑μ μνΈνμ λν΄ μ 리ν΄λ³΄λλ‘ νκ² μ΅λλ€.
λ³Έλ‘ μ λκ°κΈ°μ μμ, μ΄ κΈμ λΈλ‘체μΈμ κ΄ν κ΅λ΄ μλ£κ° λ§€μ° λΆμ‘±νλ€κ³ μκ°νμ¬ ν΄μΈ μλ£μ€ μ μ 리λ κΈμ λ²μν κ²μμ μλ €λ립λλ€. (μμλ§ν¬ : https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/ )
νμ 곑μ μνΈν(Elliptic Curve Cryptography)λ μ€λλ κ°μ₯ λ리 μ¬μ©λκ³ μμ§λ§ μ΄ν΄νκΈ° μ΄λ €μ΄ μ νμ μνΈν κΈ°μ μ€ νλμ λλ€. CloudFlareμμλ ECCλ₯Ό κ΄λ²μνκ² μ¬μ©νμ¬ κ³ κ°μ HTTPS μ°κ²°μμ λ°μ΄ν°μΌν°κ°μ λ°μ΄ν°λ₯Ό μ λ¬νλ λ°©λ²κΉμ§ λͺ¨λ κ²μ 보νΈν©λλ€.
κ·Όλ³Έμ μΌλ‘ λͺ¨λ 보μ μμ€ν μ κΈ°μ μ μ΄ν΄νκΈ° μν΄μλ 보μ μμ€ν μ μ΄ν΄νλ κ²μ΄ μ€μνλ€κ³ μκ°ν©λλ€. μ¬μ©μλ€κ³Ό 곡μ νκΈ° μν΄ μ΄ν΄νκΈ° μ½κ³ μ’μ ECC μ λ¬Έμλ₯Ό μ°Ύμ 보μμ΅λλ€. κ·Έλ¬λ μ무κ²λ λ°κ²¬νμ§ λͺ»ν μ±, μ€μ€λ‘ μμ±νκΈ°λ‘ κ²°μ νμ΅λλ€. κ·Έλ¦¬κ³ λ΄μ©λ€μ λ€μκ³Ό κ°μ΅λλ€.
μνΈνμ μμ¬λ κ³ μ μλμ νλ μλμ λ μλλ‘ λλ μ μμ΅λλ€. 1977λ
μ λ°μν λ μ¬μ΄μ μ νμ μ RSA μκ³ λ¦¬μ¦κ³Ό Diffie-Hellman ν€ κ΅ν μκ³ λ¦¬μ¦μ΄ λμ
λ λμμ΅λλ€. μ΄λ¬ν μλ‘μ΄ μκ³ λ¦¬μ¦μ 보μμ΄ μ«μ μ΄λ‘ μ κΈ°λ°μΌλ‘νλ μ΅μ΄μ μ€ν κ°λ₯ν μνΈν 체κ³λ‘ λ±μ₯νκΈ° λλ¬Έμ νλͺ
μ μ΄μμ΅λλ€. κ·Έκ²μ 곡μ λ λΉλ° (shared secret) μμ΄ λ λΉμ¬μ κ°μ μμ ν ν΅μ μ κ°λ₯νκ² ν΄μ£Όμμ΅λλ€.
μνΈνλ μ μΈκ³μ λΉλ° μ½λλΆ(codebook)μ μμ νκ² μ΄λ°νλκ²μμλΆν° ν€ κ΅νλ΄μ λκ΅°κ°κ° μ²μ·¨(listening)νλ κ±±μ μμ΄ λ λΉμ¬μ κ°μ μμ ν ν΅μ μ 보μ₯ ν μμκ² ν΄μ£Όμμ΅λλ€.
μ΅μ μνΈνλ λ°μ΄ν°λ₯Ό μνΈννλλ° μ¬μ©νλ ν€λ₯Ό κ³΅κ° ν μ μκ³ λ°μ΄ν°λ₯Ό ν΄λ νλλ° μ¬μ©νλ ν€λ λΉκ³΅κ°λ‘ μ μ§ν μ μλ€λ μμ΄λμ΄λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€. μ΄μ κ°μ΄, μ΄λ¬ν μμ€ν μ κ³΅κ° ν€ μνΈν μμ€ν μΌλ‘ μλ €μ Έ μμ΅λλ€. μ΄ μμ€ν μ€ κ°μ₯ λ리 μ¬μ©λ RSAλ Ron Rivest, Adi Shamir λ° Leonard Adleman μκ³ λ¦¬μ¦μ μ²μ 곡κ°μ μΌλ‘ λ¬μ¬ ν μΈ μ¬λμ 머리 κΈμλ₯Ό λ°μ λͺ λͺ νμ΅λλ€.
κ³΅κ° ν€ μνΈν μμ€ν μ΄ μλνλ €λ©΄ ν 뱑νμΌλ‘λ μ²λ¦¬(do)νκΈ° μ½μ§λ§ λλ리기(undo)λ μ΄λ €μ΄ μκ³ λ¦¬μ¦μ΄ νμν©λλ€. RSAμ κ²½μ°, μ¬μ΄ μκ³ λ¦¬μ¦μ λ κ°μ μμλ₯Ό κ³±ν©λλ€. λ§μ½ κ³±μ μ΄ μ¬μ΄ μκ³ λ¦¬μ¦μΈ κ²½μ°, μ΄λ €μ΄ μ(pair) μκ³ λ¦¬μ¦μ κ³±μ μ κ²°κ³Όλ₯Ό λ κ°μ κ΅¬μ± μμ μμλ‘ λΆν΄ν©λλ€. μ΄λ κ² ν λ°©ν₯μΌλ‘λ μ½κ³ λ°λ λ°©ν₯μΌλ‘ μ²λ¦¬νκΈ° μ΄λ €μ΄ νΉμ§μ κ°μ§ μκ³ λ¦¬μ¦λ€μ νΈλ©λμ΄ ν¨μ(Trapdoor Functions)λΌκ³ μλ €μ Έ μμ΅λλ€. μ’μ νΈλ©λμ΄ ν¨μλ₯Ό μ°Ύλ κ²μ μμ ν 곡κ°ν€ μνΈν μμ€ν μ λ§λλλ° μ€μν©λλ€. κ°λ¨νκ², νΈλ©λμ΄ ν¨μμμ ν λ°©ν₯μΌλ‘ κ°λ€μ κ·Έ μ§μ μμ λ€λ₯Έ λ°©ν₯μΌλ‘ κ°λ μ΄λ €μμ gapμ΄ ν΄μλ‘ μνΈν κΈ°λ° μμ€ν μ΄ λ μμ νλ€κ³ λ³Ό μ μμ΅λλ€.
RSA μκ³ λ¦¬μ¦μ λμ€μ μ΄κ³ κ°μ₯ μ μ΄ν΄ λ κ³΅κ° ν€ μνΈ μμ€ν
μ
λλ€. μ΄ μμ€ν
μμ κ³±μ
μ λΉ λ₯΄κ³ λΆν΄λ λ립λλ€. λ€μμ RSA μμ€ν
μ μμ λͺ¨μ΅κ³Ό μλ μ리λ₯Ό κ°λ΅νκ² μ€λͺ
ν©λλ€.
μΌλ°μ μΌλ‘ κ³΅κ° ν€ μνΈν μμ€ν μλ κ³΅κ° ν€μ κ°μΈ ν€μ λ κ°μ§ κ΅¬μ± μμκ° μμ΅λλ€. μνΈνλ λ©μμ§λ₯Ό κ°μ Έμμ μν μ°μ°μ μ μ©νμ¬ μμμ μ«μλ₯Ό μ»μ΅λλ€. μνΈ ν΄λ μ 무μμλ‘ λ³΄μ΄λ λ²νΈλ₯Ό μ·¨νμ¬ μλ λ²νΈλ‘ λμκ°κΈ° μν΄ λ€λ₯Έ μμ μ μ μ©ν©λλ€. κ³΅κ° ν€λ₯Ό μ¬μ©ν μνΈν λ°μ΄ν°λ κ°μΈ ν€λ₯Ό μ¬μ©νμ¬ μνΈλ₯Ό ν΄λ ν¨μΌλ‘μ¨ λ€μ λλ릴 μ μμ΅λλ€.
μ»΄ν¨ν°λ μμλ‘ μ νλ ν° μ(number)λ€μ μ μ²λ¦¬νμ§ λͺ»ν©λλ€. κ·Έλμ μ΅λκ°μ μ€μ νμ¬ μ²λ¦¬μ€μΈ μ«μλ€μ΄ λ무 컀μ§μ§ μλλ‘ λ§λ€κ³ μ€μ§ μ΅λκ°λ³΄λ€ μμ μ«μλ€λ§ λ€λ£¨κ² νλλ‘ ν΄μΌ ν©λλ€. μ«μλ€μ μλ λ‘κ·Έ μκ³μμ μ«μλ€μ²λΌ λ€λ£° μ μμ΅λλ€. μ΅λκ° λ³΄λ€ λ ν° μ«μλ₯Ό λ§λλ κ³μ°μ μ ν¨ λ²μλ΄μ λ€λ₯Έ μ«μλ‘ λ©ν(wrapping) λ©λλ€.
RSAμμ μ΄ μ΅λκ°μ λ κ°μ 무μμ μμλ₯Ό κ³±νμ¬ κ΅¬ν©λλ€. κ³΅κ° ν€μ λΉκ³΅κ° ν€λ 0λ³΄λ€ ν¬κ³ μ΅λκ°λ³΄λ€ μμ λκ°μ νΉμνκ² μ νλ μ«μμ΄κ³ κ°κ° pubμ privμΌλ‘ λΆλ¦ λλ€. ν μ«μλ₯Ό μνΈννλ €λ©΄ κ·Έ μ«μλ₯Ό pub νμ λ§νΌ κ³±ν΄μ€λλ€. κ³±ν΄μ€ κ°μ΄ μ΅λκ°μ μ§λμΉλ©΄ μ€λ°κΏ(wrap around) ν΄μ£Όμ΄μΌ ν©λλ€. λ©μμ§λ₯Ό ν΄λ νκΈ° μν΄μ κ·Έκ²μ priv νμ λ§νΌ κ³±ν΄μ£Όλ©΄ μλμ μ«μλ‘ λμμ€κ² λ©λλ€. λ―ΏκΈ° νλ€κ² μ§λ§ μ΄ κ³Όμ μ μ€μ λ‘ μλν©λλ€. (μ΄ν΄νκΈ° μ½κ²νκΈ° μν΄, μ’ μλ€ μλμμ μμλ₯Ό 보λλ‘ νκ² μ΅λλ€.)
RSA ν€ μμ μμ±νλ €λ©΄ λ¨Όμ λ κ°μ μμλ₯Ό 무μμλ‘ μ νν΄μ μ΅λκ°μ ꡬν΄μΌ ν©λλ€. κ³΅κ° ν€ pubκ° λ μ«μλ₯Ό κ³ λ¦ λλ€. λ κ°μ μμ κ°μ μλ ν, κ³΅κ° ν€λ‘λΆν° λμνλ κ°μΈ ν€μΈ privλ₯Ό κ³μ°ν μ μμ΅λλ€.
μ΄κ²μ RSAλ₯Ό κΉ¨λ κ²κ³Ό κ΄λ ¨λ μΈμ λΆν΄ λ°©λ²μ λλ€. μ΅λκ°μ κ΅¬μ± μμ μμλ‘ λΆν΄νλκ²μ κ³΅κ° ν€λ‘λΆν° λκ΅°κ°μ κ°μΈ ν€λ₯Ό κ³μ°ν μ μκ² ν΄μ£Όκ³ λΉκ³΅κ° λ©μμ§λ₯Ό ν΄λ ν μ μκ² ν΄μ€λλ€.
μ’ λ ꡬ체μ μΌλ‘ μ€λͺ ν΄λ³΄κ² μ΅λλ€. μμ 13κ³Ό 7μ μ¬μ©νλ©΄ μ΅λκ°μ 91 μ λλ€. κ³΅κ° ν€λ₯Ό 5λ‘ μ€μ ν΄ λ΄ μλ€. 7κ³Ό 13μ μκ³ μλ€λ μ¬μ€μ μ΄μ©νμ¬ 91μ μμλ₯Ό μ μ©νκ³ νμ₯λ μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ κ°μΈ ν€κ° 29λΌλ κ²μ μ μ μμ΅λλ€. μ΄λ¬ν λ§€κ°λ³μλ€μ μμ ν RSA μμ€ν μ μ μν©λλ€. λΉμ μ΄ μ«μλ₯Ό κ°μ Έμμ κ·Έκ²μ 5 λ² κ³±νλ©΄ κ·Έκ²μ μνΈνλκ³ , κ·Έ μ«μλ₯Ό λ°μμ 29λ² κ³±νλ©΄ μλμ μ«μλ₯Ό λμ°Ύμ μ μμ΅λλ€.
μ΄λ¬ν valuesλ€μ μ¬μ©νμ¬ "CLOUD" λ©μμ§λ₯Ό μνΈν ν΄λ³΄λλ‘ νκ² μ΅λλ€. λ©μμ§λ₯Ό μνμ μΌλ‘ νννκΈ° μν΄μλ λ¬Έμλ₯Ό μ«μλ‘ λ³νν΄μΌ ν©λλ€. λΌν΄ μνλ²³μ μΌλ°μ μΈ ννμ UTF-8μ λλ€. κ° λ¬Έμλ μ«μμ ν΄λΉν©λλ€.
μ¬κΈ° μΈμ½λ©μμ CLOUDλ 67,76,79,85,68 μ λλ€. μ΄ μ«μλ€μ λͺ¨λ μ΅λκ°μΈ 91λ³΄λ€ μμΌλ―λ‘ κ°λ³μ μΌλ‘ μνΈν ν μ μμ΅λλ€. 첫κΈμλΆν° 보λλ‘ νκ² μ΅λλ€.
μνΈνλ κ°μ μ»κΈ° μν΄ μ«μλ₯Ό 5λ² κ³±ν΄λ³΄κ² μ΅λλ€.
67 Γ 67 = 4489 = 30
4489λ μ΅λκ°λ³΄λ€ ν¬κΈ° μ€λ°κΏμ ν΄μΌν©λλ€. μ°λ¦¬λ 91λ‘ λλκ³ λλ¨Έμ§λ₯Ό μ·¨ν©λλ€.
4489 = 91 Γ 41 + 30
30 Γ 67 = 2010 = 8
8 Γ 67 = 536 = 81
81 Γ 67 = 5427 = 58
μ¦, 67μ μνΈν λ λ²μ μ 58μ
λλ€.
κ° λ¬Έμμ λν νλ‘μΈμ€λ₯Ό λ°λ³΅νλ©΄ μνΈν λ λ©μμ§ CLOUDκ°λ©λλ€.
58, 20, 53, 50, 87
μ΄ μ€ν¬λ¨λΈ λ λ©μμ§μ μνΈλ₯Ό ν΄λ
νκΈ° μν΄ κ° λ²νΈλ₯Ό κ°μ Έ μμ 29 λ²μ κ³±ν©λλ€.
58 Γ 58 = 3364 = 88 (μ«μκ° μ΅λ κ°λ³΄λ€ ν΄ λ μ€λ°κΏμ ν©λλ€.)
88 Γ 58 = 5104 = 8
...
9 Γ 58 = 522 = 67
μ΄λ»μ΅λκΉ? λ€μ 67λ‘ λμμμ΅λλ€. μ΄λ°μμΌλ‘ λλ¨Έμ§ μ«μλ€κ³Ό ν¨κ» μλνμ¬ μλ³Έ λ©μμ§λ₯Ό λ§λ€μ΄λ λλ€.
RSAμ Diffie-Hellmanμ κ°λ ₯ν 보μ μ¦κ±°λ₯Ό μ μνκΈ° λλ¬Έμ λ§€μ° κ°λ ₯νμ΅λλ€. μ μλ μμ€ν
μ κΉ¨λ κ²μ΄ ν΄κ²°νκΈ° μ΄λ €μ΄ μνμ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²κ³Ό λμΌνλ€λ κ²μ μ¦λͺ
νμ΅λλ€. μΈμ λΆν΄ (Factoring)λ λ§€μ° μ μλ €μ§ λ¬Έμ μ΄λ©° κ³ λλΆν° μ°κ΅¬λμ΄ μμ΅λλ€. μ΄ λ¬Έμ μ κ΄ν μ΄λ€ λνꡬλΌλ μκΈ΄λ€λ©΄ κ·Έκ²μ 컀λ€λ λ΄μ€κ° λ κ²μ
λλ€.
μ¦, μΈμ λΆν΄(Factoring)μ λΉνΈλ¨μμμλ κ°μ₯ μ΄λ €μ΄ λ¬Έμ λ μλλλ€. Quadratic Sieve λ° General Number Field Sieveμ κ°μ νΉμν λ μκ³ λ¦¬μ¦μ μμ λΆν΄μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ§λ€μ΄μ‘μΌλ©° λΉκ΅μ μ±κ³΅μ μ΄μμ΅λλ€. μ΄λ¬ν μκ³ λ¦¬μ¦μ μλ €μ§ μμμ μμ μΆμΈ‘νλ λ¨μν μ κ·Ό λ°©μλ³΄λ€ λΉ λ₯΄κ³ κ³μ°λμ΄ μ μ΅λλ€.
μ΄λ¬ν μΈμ λΆν΄ μκ³ λ¦¬μ¦μ μΈμ λΆν΄λλ μ«μμ ν¬κΈ°κ° 컀μ§μ λ°λΌ λ ν¨μ¨μ μ λλ€. ν° μλ₯Ό μΈμ λΆν΄νλ λμ΄λμ ν° μλ₯Ό κ³±νλ μ΄λ €μ μ¬μ΄μ κ°μ μ(μ¦, ν€μ λΉνΈ κΈΈμ΄)κ° μ»€μ§μ λ°λΌ μ€μ΄λλλ€.
μ«μλ₯Ό ν΄λ νλλ° μ¬μ©ν μ μλ 리μμ€κ° λμ΄λ¨μ λ°λΌ ν€μ ν¬κΈ°λ λ λΉ λ₯΄κ² μ»€μ§ νμκ° μμ΅λλ€. μ΄κ²μ κ³μ° λ₯λ ₯μ΄ μ νλ λͺ¨λ°μΌμ΄λ μ μ λ ₯μ λλ°μ΄μ€μκ²λ μ§μ κ°λ₯ν μν©μ΄ μλλλ€. μΈμλΆν΄μ κ³±μ μ¬μ΄μ κ°μ μ₯κΈ°κ° μ§μλ μ μμ΅λλ€.
μ΄ λͺ¨λ κ²μ RSAκ° μνΈνμ λ―Έλλ₯Ό μν μ΄μμ μΈ μμ€ν μ΄ μλλΌλ κ²μ λλ€. μ΄μμ μΈ νΈλ©λμ΄ ν¨μ(Trapdoor function)μμλ λ¬Έμ μ μ«μμ κ΄λ ¨νμ¬ μ¬μ΄ λ°©λ²κ³Ό μ΄λ €μ΄ λ°©λ²μ΄ λμΌν λΉμ¨λ‘ λ μ΄λ €μμ§λλ€. κ·Έλμ μ°λ¦¬λ λ λμ νΈλ©λμ΄λ₯Ό κΈ°λ°μΌλ‘νλ κ³΅κ° ν€ μμ€ν μ΄ νμν κ²μ λλ€.