SSLκ³Ό TLS
μμ ν¬μ€ν
μμ μ κΉ μ€λͺ
νμ§λ§ HTTPμ SSL/TLS νλ‘ν μ½μ κ²°ν©νμ¬ λ³΄μμ κ°νν κ²μ΄ HTTPS μλ€. κ·Έλ λ€λ©΄ SSL/TLS κ° λ¬΄μμ νκΈΈλ 보μμ κ°νμμΌ μ€ μ μλ κ²μΌκΉ?
SSLμ Secure Sockets Layerμ μ½μλ‘ 1995λ
μ λ·μ€μΌμ΄νμ μν΄ νμν μΉλΈλΌμ°μ μ μΉμλ²κ° λ°μ΄ν° ν΅μ μ μνΈννλ νλ‘ν μ½μ΄λ€. κ·Έλ¬λ 1996λ
μ λμ¨ SSL 3.0μμ μ€κ³ κ²°ν¨μΌλ‘ μΈν 보μ μ·¨μ½μ μ΄ λ°κ²¬λμκ³ μ΄λ₯Ό 보μνμ¬ λμ¨ κ²μ΄ TLS λ€.
TLSλ Transport Layer Securityμ μ½μλ‘ SSLμ κ³μΉνμ¬ νμ¬ μΉμμ μ°μ΄λ 보μ ν΅μ μ λλΆλΆ TLS κΈ°λ°μ΄λ€. μ¦, νν βSSL μΈμ¦μβλΌκ³ λΆλ₯΄λ κ²λ μ€μ λ‘λ TLS μΈμ¦μμ΄λ©° SSLμ μμ¬μ μΈ μ΄λ¦μΌ λΏ TLSκ° νμ¬μ νμ€μ΄λΌκ³ μ΄ν΄νλ©΄ λλ€.
SSL/TLSκ° ν΄κ²°νλ λ¬Έμ
μΉμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ λκ΅°κ° λ€νΈμν¬λ₯Ό κ°λ‘μ±μ λ΄μ©μ νμ³λ³΄λ λμ²(Eavesdropping), λ°μ΄ν°λ₯Ό μ€κ°μμ λ°κΎΈλ λ³μ‘°(Modification), κ°μ§κ° μ§μ§ ν΅μ λμμΈ μ²νλ μμ₯(Spoofing) λ±μ μνμ΄ μ‘΄μ¬νλ€. μ΄λ₯Ό λ°©μ§νκΈ° μν΄ SSL/TLSλ μλ μΈ κ°μ§λ₯Ό 보μ₯νλ€.
- κΈ°λ°μ±(Confidentiality): λ°μ΄ν°λ₯Ό μνΈννμ¬ λμ²μ λ°©μ§
- 무결μ±(Integrity): λ°μ΄ν°κ° μ€κ°μ λ³μ‘°λμ§ μμμμ 보μ₯
- μΈμ¦(Authentication): μλ²(νΉμ ν΄λΌμ΄μΈνΈ)μ μ μμ κ²μ¦
Β
SSL/TLSμ λμ λ°©μ
TLSλ κΈ°λ³Έμ μΌλ‘ TCP μμμ λμνλ€. κ·Έλμ TCP μ°κ²°κ³Όμ λΆν° λμ΄νλ©΄ μνμ€λ μλμ κ°λ€.
- TCP 3-way handshake
- TLS νΈλμ °μ΄ν¬ β ν΅μ μλμ λν κ²μ¦ λ° λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ° μν΄ μ΄λ€ λ°©λ²μ μ¬μ©ν κ²μΈμ§ νμ
- μ μ‘ β μνΈν λ° λ³΅νΈν κ³Όμ μ ν¬ν¨ν λ°μ΄ν° μ μ‘
- μΈμ μ’ λ£ (λλ μ¬κ°) β μ’ λ£ μ μΈμ ν€λ νκΈ°
TLS νΈλμ °μ΄ν¬ κ³Όμ
- Client Hello: ν΄λΌμ΄μΈνΈκ° μλ²μ μ μ
- ν΄λΌμ΄μΈνΈ μΈ‘μμ μ§μνλ μνΈν λ°©μμ μλ²μκ² μλ¦°λ€.
- ν΄λΌμ΄μΈνΈμμ μμ±ν 무μμ λ°μ΄νΈ λ¬Έμμ΄μ μ λ¬νλ€.
- Server Hello: μλ²μμ ν΄λΌμ΄μΈνΈμ ν΅μ μ μλ΅
- μλ² μΈ‘μμλ μ§μνλ μνΈν λ°©μμ ν΄λΌμ΄μΈνΈμκ² μλ¦°λ€.
- μλ²κ° 보μ νκ³ μλ μΈμ¦μλ₯Ό ν΄λΌμ΄μΈνΈμκ² λ³΄λΈλ€.
- μλ²μμ μμ±ν 무μμ λ°μ΄νΈ λ¬Έμμ΄μ μ λ¬νλ€.
- μΈμ¦μ κ²μ¦: ν΄λΌμ΄μΈνΈκ° μΈμ¦μμ μ ν¨μ±μ κ²μ¦
- λμ§νΈ μΈμ¦μλ₯Ό λ°κΈνκ³ κ΄λ¦¬νλ μ 3μ κΈ°κ΄μΈ CA(Client Authority)λ‘ λΆν° μλ²κ° λ³΄λΈ μΈμ¦μκ° μ ν¨νμ§λ₯Ό νμΈνλ€.
- μΈμ¦μκ° μ λ’°ν μ μλ CAμ μν΄ μλͺ λμλμ§ νμΈ
- ν΄λΌμ΄μΈνΈκ° μ μνλ λλ©μΈκ³Ό μΈμ¦μμ λλ©μΈ μ λ³΄κ° μΌμΉνλμ§ νμΈ
- ν΄λΌμ΄μΈνΈ ν€ κ΅ν: ν΄λΌμ΄μΈνΈκ° μΈμ ν€λ₯Ό μμ±νκΈ° μν λ°μ΄ν°λ₯Ό μλ²μ μ μ‘
- ν΄λΌμ΄μΈνΈκ° μμ κ΅νν 무μμ λ°μ΄νΈ λ¬Έμμ΄μ μ‘°ν©νμ¬ Pre Master Secretμ μμ±νλ€.
- μΈμ¦μ μμ ν¬ν¨λ μλ²μ 곡κ°ν€λ₯Ό μ¬μ©νμ¬ Pre Master Secretμ μνΈν νκ³ μλ²μ μ μ‘νλ€.
- μΈμ ν€ μμ±: ν΄λΌμ΄μΈνΈμ μλ² κ°κ°μμ μ΄λ² ν΅μ μΈμ λμ μ¬μ©ν μΈμ ν€(Session Key)λ₯Ό μμ±
- μλ²μμλ 보μ νκ³ μλ λΉκ³΅κ° ν€λ₯Ό μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ Pre Master Secretμ 볡νΈννλ€.
- μλ²μ ν΄λΌμ΄μΈνΈ λͺ¨λ Pre Master Secretμ μ¬μ©νμ¬ Master Secretμ λ§λ€κ³ Master Secretμ μ¬μ©νμ¬ μΈμ ν€λ₯Ό λ§λ λ€.
- κ°κ° λ§λ€μ΄μ§ μΈμ ν€λ λμΉν€λ‘μ¨ μλ‘ μΌμΉν΄μΌνλ€.
- ν΄λΌμ΄μΈνΈ μλ£(Client Finished): ν΄λΌμ΄μΈνΈμμ νΈλμ °μ΄ν¬κ° μλ£λμμμ μλ¦Ό
- ν΄λΌμ΄μΈνΈκ° μΈμ ν€λ₯Ό μ¬μ©νμ¬ μνΈν λ βFinishedβ λ©μμ§λ₯Ό μλ²μ μ μ‘
- μλ² μλ£ (Server Finished): μλ²μμλ νΈλμ °μ΄ν¬κ° μλ£λμμμ μλ¦Ό
- μλ²μμ μμ±ν μΈμ ν€λ₯Ό μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈμ μλ£ λ©μμ§λ₯Ό 볡νΈννκ³ νμΈ
- μλ²μμλ λ§μ°¬κ°μ§λ‘ μΈμ ν€λ₯Ό ν΅ν΄ μνΈν ν μλ£ λ©μμ§λ₯Ό ν΄λΌμ΄μΈνΈμ μ μ‘
- μνΈνλ ν΅μ μμ: μ΄νμ λͺ¨λ λ°μ΄ν°λ μΈμ ν€λ‘ μνΈνλμ΄ μ μ‘
μΈμ¦μμ μΈμ¦κΈ°κ΄ (CA, Client Authority)
- μΈμ¦μ(Certificate)λ SSL/TLSμ ν΅μ¬ μμ μ€ νλλ‘ μλ²μ 곡κ°ν€ λ° λλ©μΈ μ 보λ₯Ό λ΄κ³ μλ μ μ λ¬Έμλ€.
- μΈμ¦μλ μλ² μΈ‘μμ CAλ₯Ό ν΅ν΄ λ³λλ‘ λ°κΈμ λ°μμΌ νλ©°, HTTPS νλ‘ν μ½μ μ¬μ©νλλΌλ CAλ₯Ό ν΅ν μλͺ μ΄ κ°μΆ°μ§μ§ μμκ±°λ μΈμ¦μκ° λ§λ£λμμ κ²½μ° λΈλΌμ°μ κ° μ λ’°νμ§ μλλ€.
Β