HTTPS 와 SSL(TLS)

πŸ—“ ⏰ μ†Œμš”μ‹œκ°„ 10 λΆ„

Hexo λΈ”λ‘œκ·Έμ— HTTPS μ μš©ν•˜λŠ” 포슀트λ₯Ό μž‘μ„±ν•˜λ €λ‹€κ°€ λ³΄λ‹ˆ λ¨Όμ € HTTPSλ₯Ό μ •λ¦¬ν•˜λŠ”κ²Œ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” HTTPS의 원리에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

HTTPS

HTTP(Hypertext Transfer Protocol) 은 HTML 을 주고받을 λ•Œ μ„œλ‘œ μ§€ν‚€κΈ°λ‘œ μ •ν•œ κ·œμΉ™μž…λ‹ˆλ‹€. 그리고 HTTPS(HTTP Secure) λŠ” HTTP 의 λ³΄μ•ˆμ„ κ°•ν™”ν•œ κ²ƒμœΌλ‘œ, μ•”ν˜Έν™”λœ μ—°κ²°λ‘œ μ›Ή μ„œλ²„μ™€ ν†΅μ‹ ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. HTTP λŠ” μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ£Όκ³  λ°›λŠ” λ©”μ‹œμ§€κ°€ λ…ΈμΆœλ˜μ–΄ κ°€λ‘œμ±„κ±°λ‚˜ μœ„μ‘°λ  μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λΉ„λ°€λ²ˆν˜Έ, κ³„μ’Œλ²ˆν˜Έ λ“± μ€‘μš”ν•œ 정보λ₯Ό 전솑할 λ•ŒλŠ” HTTPS λ₯Ό μ΄μš©ν•˜κ²Œ λ©λ‹ˆλ‹€.

HTTPS λ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 λΈŒλΌμš°μ €λ§ˆλ‹€ μ‘°κΈˆμ”© λ‹€λ₯΄μ§€λ§Œ μ΄ˆλ‘μƒ‰κ³Ό μžλ¬Όμ‡  ν‘œμ‹œλ₯Ό μ΄μš©ν•΄μ„œ μ•ˆμ „ν•˜κ²Œ μ—°κ²°λœ μ‚¬μ΄νŠΈλΌλŠ” κ±Έ μ•Œλ €μ€λ‹ˆλ‹€. μ΄λŠ” μŠ€λ‹ˆν•‘, ν”Όμ‹±, 데이터변쑰 λ“±μœΌλ‘œλΆ€ν„° μ•ˆμ „ν•˜λ‹€λŠ” 것을 μ˜λ―Έν•˜κ³ , λ°©λ¬Έμžλ‚˜ μ„œλΉ„μŠ€ μ‚¬μš©μžμ—κ²Œ 신뒰감을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.[1]

Chrome

Safari

Firefox

HTTPSλŠ” SSL(Secure Socket Layer) λΌλŠ” κΈ°μˆ μ„ μ΄μš©ν•©λ‹ˆλ‹€. μ΄λŠ” IETF(ꡭ제 인터넷 ν‘œμ€€ν™” 기ꡬ)μ—μ„œ ν‘œμ€€ν™”ν•˜λ©΄μ„œ 이름이 λ°”λ€Œμ–΄ TLS(Transport Layer Security)라고도 λΆ€λ¦…λ‹ˆλ‹€. κ°œμΈν‚€(Private Key)와 κ³΅κ°œν‚€(Public Key)λ₯Ό λ³΅ν•©μ μœΌλ‘œ μ‚¬μš©ν•˜κ³ , 인증기관(Certificate Authority, CA)μ΄λΌλŠ” 제3자λ₯Ό μ΄μš©ν•΄ λ³΄μ•ˆμ„ κ°•ν™”ν•˜κ³  μ „μ†‘λ˜λŠ” 데이터λ₯Ό μ•”ν˜Έν™”ν•©λ‹ˆλ‹€. SSL μ—μ„œ μ‚¬μš©ν•˜λŠ” κ°œλ…λ“€μ„ κ°„λ‹¨ν•˜κ²Œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ•”ν˜Έν™” Encryption

μ€‘μš”ν•œ 정보가 μžˆμŠ΅λ‹ˆλ‹€. 이 정보λ₯Ό ν—ˆλ½λœ μ‚¬λžŒλ“€λ§Œ λ³Ό 수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄, μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄ 정보λ₯Ό μ•”ν˜Έλ¬ΈμœΌλ‘œ λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ•”ν˜Έν™”(Encryption)이라고 ν•˜κ³  μ•”ν˜Έν™”λœ μ •λ³΄λŠ” λ³΅ν˜Έν™”(Decryption) 과정을 톡해 해독할 수 μžˆμŠ΅λ‹ˆλ‹€. 이런 μ•”ν˜Έν™”/λ³΅ν˜Έν™” κ³Όμ •μ—μ„œ λΉ„λ°€λ²ˆν˜Έμ™€ λΉ„μŠ·ν•œ κΈ°λŠ₯을 ν•˜λŠ” 것을 ν‚€(Key)라고 ν•©λ‹ˆλ‹€.

μ›Ή μ‚¬μ΄νŠΈλ₯Ό ν†΅ν•΄μ„œ λ―Όκ°ν•œ 정보λ₯Ό 주고받을 λ•Œ ν•„μš”ν•©λ‹ˆλ‹€. 주둜 λ‹€μŒκ³Ό 같은 정보λ₯Ό λ‹€λ£° λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.[2]

  • 둜그인 및 μ•”ν˜Έ
  • 금육 정보 (μ€ν–‰κ³„μ’Œ, μ‹ μš©μΉ΄λ“œ 번호, λ³΄μ•ˆμΉ΄λ“œ 번호 λ“±)
  • 독점적인 정보
  • 법λ₯  λ¬Έμ„œ 및 κ³„μ•½μ„œ
  • 고객 λͺ©λ‘
  • 의료 기둝

λŒ€μΉ­ν‚€ The Symmetric Key

μ•”ν˜Έν™”

λ³΅ν˜Έν™”

μ•”ν˜Έν™” λ°©μ‹μ—μ„œ κ°€μž₯ μ‰½κ²Œ 생각해볼 수 μžˆλŠ” 방법은 μ•”ν˜Έν™”ν•  λ•Œ μ‚¬μš©ν•œ ν‚€λ₯Ό λ³΅ν˜Έν™”ν•  λ•Œλ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉 정보 A λ₯Ό μ•”ν˜Έν™”ν•œ 후에 정보λ₯Ό μ „λ‹¬ν•˜κ³ , μ•”ν˜Έν™”μ— μ‚¬μš©ν•œ 킀도 μ „λ‹¬ν•˜λŠ” κ²λ‹ˆλ‹€. 이런 방식을 β€˜λŒ€μΉ­ν‚€β€™ 방식이라고 ν•©λ‹ˆλ‹€. κ°„λ‹¨ν•œ λ°©λ²•μ΄μ§€λ§Œ 이 ν‚€λ₯Ό μ „λ‹¬ν•˜λŠ” 것 μžμ²΄λ„ μœ„ν—˜ν•œ κ³Όμ •μž…λ‹ˆλ‹€. ν‚€κ°€ 유좜되기 쉽기 λ•Œλ¬Έμ— μ•ˆμ „ν•œ 방법이 μ•„λ‹™λ‹ˆλ‹€.

비밀킀와 κ³΅κ°œν‚€ Private Key & Public Key

https://en.wikipedia.org/wiki/Public-key_cryptography

λŒ€μΉ­ν‚€μ²˜λŸΌ λ™μΌν•œ ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹ , λ‹€λ₯Έ 두 개의 ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 'λΉ„λŒ€μΉ­ν‚€(Asymmetric Key)'라고 ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ ν‚€λ‘œ μ•”ν˜Έν™”λ₯Ό μ‹œν‚€λ©΄ λ‹€λ₯Έ ν•˜λ‚˜μ˜ ν‚€λ‘œ ν’€ 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. λΉ„λ°€ν‚€/κ³΅κ°œν‚€(Private Key/Public Key) 방식은 이런 ν‚€ 쌍(Key pair)λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

https://en.wikipedia.org/wiki/Public-key_cryptography

λΉ„λ°€ν‚€λŠ” μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€λœ ν‚€κ³ , κ³΅κ°œν‚€λŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ λ³Ό 수 μžˆλ„λ‘ 곡개된 ν‚€μž…λ‹ˆλ‹€. κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™”ν•˜λ©΄, λΉ„λ°€ν‚€λ₯Ό 가진 μ‚¬λžŒλ§Œμ΄ 이 정보λ₯Ό λ³΅ν˜Έν™”ν•  수 있게 λ©λ‹ˆλ‹€.

https://en.wikipedia.org/wiki/Public-key_cryptography

κ·Έλ ‡λ‹€λ©΄ λ°˜λŒ€λ‘œ λΉ„λ°€ν‚€λ‘œ 정보λ₯Ό μ•”ν˜Έν™”ν•œλ‹€λ©΄ μ–΄λ–¨κΉŒμš”? λ¬Όλ‘  κ³΅κ°œν‚€λ₯Ό 가진 μ‚¬λžŒμ΄ ν’€ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ³΅κ°œν‚€λŠ” 말 κ·ΈλŒ€λ‘œ κ³΅κ°œλ˜μ—ˆκΈ° λ•Œλ¬Έμ— 마음 먹으면 λˆ„κ΅¬λ‚˜ ν’€ 수 있게 λ©λ‹ˆλ‹€.

이런 방식은 쓸데없어 λ³΄μ΄μ§€λ§Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. A λΌλŠ” μ‚¬λžŒμ΄ λΉ„λ°€ν‚€/κ³΅κ°œν‚€ μŒμ„ μƒμ„±ν•œ 후에 κ³΅κ°œν‚€λ₯Ό B λΌλŠ” μ‚¬λžŒμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€. 그럼 A λΌλŠ” μ‚¬λžŒμ΄ 본인만이 가지고 μžˆλŠ” λΉ„λ°€ν‚€λ‘œ μ•”ν˜Έν™”λœ 정보λ₯Ό λ³΄λƒˆμ„ λ•Œ, B κ°€ κ³΅κ°œν‚€λ‘œ ν’€ 수 있겠죠. 즉, B κ°€ κ³΅κ°œν‚€λ‘œ ν’€ 수 μžˆλ‹€λ©΄ A κ°€ 짝이 λ§žλŠ” λΉ„λ°€ν‚€λ₯Ό 가지고 μžˆλ‹€λŠ” 것을 증λͺ…ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ•”ν˜Έν™”λ₯Ό μ΄μš©ν•΄ 신원을 증λͺ…ν•  수 μžˆλŠ” 방식을 'μ „μžμ„œλͺ…(digital signature)'이라고 ν•©λ‹ˆλ‹€.[3]

SSL μΈμ¦μ„œ DIgital Certificate

μΈμ¦μ„œλ₯Ό ν†΅ν•œ λ³΄μ•ˆ λ°©μ‹μ—λŠ” λ‹€μŒκ³Ό 같은 μ„Έ 가지 μ—­ν• μžκ°€ λ“±μž₯ν•©λ‹ˆλ‹€.

  • ν΄λΌμ΄μ–ΈνŠΈ : μ‚¬μš©μž
  • μ„œλ²„ : μ„œλΉ„μŠ€ 제곡자
  • CA : Certificate Authorities 인증 κΈ°κ΄€

신원 확인

SSL λ°©μ‹μ—μ„œ 핡심 역할을 ν•˜λŠ” 것이 SSL μΈμ¦μ„œ(ν˜Ήμ€ 디지털 μΈμ¦μ„œ) μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μΈμ¦μ„œλŠ” μ‚¬μš©μž(ν΄λΌμ΄μ–ΈνŠΈ)κ°€ μ ‘μ†ν•œ μ„œλ²„κ°€ μ• μ΄ˆμ— μ˜λ„ν•œ μ„œλ²„κ°€ λ§žλŠ” 것인지λ₯Ό 보μž₯ν•΄μ€λ‹ˆλ‹€. 인터넷뱅킹 μ‚¬μ΄νŠΈμ— μ ‘μ†ν–ˆλ‹€λ©΄ 이게 정말 κ·Έ 인터넷뱅킹이 λ§žλŠ”μ§€, κ°€μ§œμ‚¬μ΄νŠΈλŠ” μ•„λ‹Œμ§€ ν™•μΈν•΄μ€λ‹ˆλ‹€. 즉, μ›Ή μ‚¬μ΄νŠΈμ˜ 신원을 ν™•μΈν•΄μ£ΌλŠ” 역할을 ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μΈμ¦μ„œλŠ” 신뒰성을 곡인받은 κΈ°μ—…μ—μ„œ κ΅¬μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이런 기업을 CA(Certificate Authorities)라고 ν•©λ‹ˆλ‹€. CAλŠ” μΈμ¦μ„œ 신청을 λ°›μ•„μ„œ κ²€μ¦ν•˜κ³  μΈμ¦μ„œλ₯Ό λ°œκΈ‰ν•΄μ€λ‹ˆλ‹€. λˆμ„ λ‚΄κ³  μ•ˆμ „ν•œ μ‚¬μ΄νŠΈλΌκ³  보μž₯ν•˜λŠ” μΈμ¦μ„œλ₯Ό μ‚¬λŠ” 것이죠. CAλŠ” μ•ˆμ „ν•œ μ‚¬μ΄νŠΈλΌλŠ” 것을 ν™•μΈν•˜κ³  곡인된 μΈμ¦μ„œλ₯Ό μžμ‹ μ˜ λΉ„λ°€ν‚€λ‘œ μ•”ν˜Έν™”ν•΄μ„œ μ€λ‹ˆλ‹€. 이제 인증을 받은 νšŒμ‚¬λŠ” μ‚¬μš©μžκ°€ μ„œλ²„μ— 접속할 λ•Œ μΈμ¦μ„œλ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

μΈμ¦μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 접속할 λ•Œ λ‹€μš΄λ‘œλ“œ λ©λ‹ˆλ‹€. 그리고 λΈŒλΌμš°μ €μ—λŠ” μ‹ λ’°ν•  수 μžˆλŠ” CA λͺ©λ‘κ³Ό CA의 κ³΅κ°œν‚€λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. λΈŒλΌμš°μ €κ°€ ν•΄λ‹Ή μ„œλ²„μ˜ μΈμ¦μ„œλ₯Ό λ°›μ•„μ„œ CA의 κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™” ν•  것이고, λ§Œμ•½ ν’€λ¦°λ‹€λ©΄ CA의 인증을 μ œλŒ€λ‘œ 받은 μ•ˆμ „ν•œ μ‚¬μ΄νŠΈμž„μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μ—μ„œ μ‚΄νŽ΄ λ³Έ μ „μžμ„œλͺ… 방식을 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

https://security.googleblog.com/2015/10/simplifying-page-security-icon-in-chrome.html

λ”°λΌμ„œ μ œλŒ€λ‘œ 된 μΈμ¦μ„œλ₯Ό 가진 μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λ©΄ HTTPS와 ν•¨κ»˜ μ΄ˆλ‘μƒ‰ ν˜Ήμ€ μžλ¬Όμ‡ λ‘œ 연결을 ν‘œμ‹œν•˜μ§€λ§Œ, CAκ°€ μ•„λ‹Œ κ³³μ—μ„œ 인증을 λ°›μ•˜λ‹€λ©΄ HTTPS 연결이라도 λΈŒλΌμš°μ €μ—μ„œ κ²½κ³  λ©”μ‹œμ§€λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

λ™μž‘ 방식

λ¨Όμ € μ„œλ²„κ°€ μ‹ λ’°ν•  수 μžˆλŠ” μ‚¬μ΄νŠΈλΌλŠ” 것을 ν™•μΈν•œ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ™€μ˜ ν•Έλ“œμ‰μ΄ν¬ λ‹¨κ³„μ—μ„œ μ£Όκ³  받은 랜덀 데이터λ₯Ό μ΄μš©ν•΄ ν‚€λ₯Ό ν•˜λ‚˜ λ§Œλ“­λ‹ˆλ‹€. 이 ν‚€λ₯Ό μ΄μš©ν•΄μ„œ λŒ€μΉ­ν‚€ λ°©μ‹μœΌλ‘œ μ•”ν˜Έν™”λœ 정보λ₯Ό μ£Όκ³ λ°›μœΌλ €κ³  ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” 이 λŒ€μΉ­ν‚€λ₯Ό κ·Έλƒ₯ 보내면 μœ„ν—˜ν•˜λ‹€λŠ” κ±°μ£ .

μΈμ¦μ„œ μ•ˆμ—λŠ” ν•΄λ‹Ή μ‹ μ²­ν•œ μ„œλΉ„μŠ€μ˜ 정보와 μ„œλ²„μ˜ κ³΅κ°œν‚€κ°€ λ“€μ–΄μžˆμŠ΅λ‹ˆλ‹€.[4] λŒ€μΉ­ν‚€λ₯Ό μ„œλ²„μ— μ•ˆμ „ν•˜κ²Œ 전솑할 방법은 λ°”λ‘œ 이 μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•œ λ°©λ²•μž…λ‹ˆλ‹€. μƒμ„±ν•œ λŒ€μΉ­ν‚€λ₯Ό μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•œ ν›„ μ„œλ²„μ— 보내면, λΉ„λ°€ν‚€λ₯Ό 가진 μ„œλ²„λ§Œ λŒ€μΉ­ν‚€λ₯Ό λ³΅ν˜Έν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ λŒ€μΉ­ν‚€λ₯Ό κ΅ν™˜ν–ˆλ‹€λ©΄ μ€€λΉ„λŠ” λλ‚¬μŠ΅λ‹ˆλ‹€. λŒ€μΉ­ν‚€μ˜ 경우 κ°„λ‹¨ν•˜μ§€λ§Œ λŒ€μΉ­ν‚€ 자체λ₯Ό μ£Όκ³ λ°›λŠ” 것이 λ¬Έμ œμ˜€λŠ”λ° ν•΄κ²°λ˜μ—ˆλ„€μš”.

λŒ€μΉ­ν‚€λ₯Ό μ΄μš©ν•΄μ„œ 정보λ₯Ό κ΅ν™˜ν•˜κ³ , μ‚¬μš©λœ λŒ€μΉ­ν‚€λŠ” SSL 접속이 λλ‚˜λ©΄ νκΈ°λ©λ‹ˆλ‹€.

정리

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” HTTPS 에 λŒ€ν•΄μ„œ μ‚΄νŽ΄λ΄€μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 큰 μ€„κΈ°λ§Œ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

  • μ€‘μš”ν•œ μ •λ³΄λŠ” μ•”ν˜Έν™”κ°€ ν•„μš”ν•΄μ„œ SSL이 적용된 HTTPS λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
  • CAλŠ” μ„œλ²„λ₯Ό μΈμ¦ν•˜κ³  μΈμ¦μ„œλ₯Ό λ°œκΈ‰ν•œλ‹€.
  • μ„œλ²„λŠ” μΈμ¦μ„œμ— μ„œλΉ„μŠ€μ˜ 정보와 μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό μ €μž₯ν•΄ μ œκ³΅ν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” μΈμ¦μ„œλ₯Ό 톡해 μ„œλ²„κ°€ μ‹ λ’°ν•  수 μžˆλŠ”μ§€ 확인할 수 있고,
  • μΈμ¦μ„œμ— μžˆλŠ” κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ μ„œλ²„μ™€ λŒ€μΉ­ν‚€λ₯Ό κ΅ν™˜ν•  수 μžˆλ‹€.