λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT

SSL/TLS: μ•”ν˜Έν™”μ™€ λ³΄μ•ˆμ„ μœ„ν•œ 핡심 ν”„λ‘œν† μ½œ

by πŸ’²πŸŽ΅βœ–οΈβœ”οΈβ˜Ό 2024. 2. 27.
728x90

SSL/TLS: μ•”ν˜Έν™”μ™€ λ³΄μ•ˆμ„ μœ„ν•œ 핡심 ν”„λ‘œν† μ½œ

유래

SSL(Secure Sockets Layer)은 1994년에 λ„·μŠ€μΌ€μ΄ν”„μ—μ„œ 처음 λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έ ν›„ TLS(Transport Layer Security)κ°€ λ“±μž₯ν•˜μ—¬ SSL을 λŒ€μ²΄ν•˜κ³  λ°œμ „μ‹œμΌœμ™”μŠ΅λ‹ˆλ‹€. ν˜„μž¬λŠ” 주둜 TLS ν”„λ‘œν† μ½œμ΄ μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ—­ν• 

SSL/TLSλŠ” ν†΅μ‹ ν•˜λŠ” λ‹Ήμ‚¬μž κ°„μ˜ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜κ³  μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ΄λŠ” μ€‘μš”ν•œ 정보(λΉ„λ°€λ²ˆν˜Έ, μ‹ μš©μΉ΄λ“œ 정보 λ“±)λ₯Ό 인터넷 μƒμ—μ„œ μ•ˆμ „ν•˜κ²Œ 주고받을 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

μ‚¬μš© 상황

1. μ›Ή λ³΄μ•ˆ (HTTPS)

SSL/TLSλŠ” HTTPS(SSL을 μ΄μš©ν•œ HTTP)의 핡심이며, μ›Ήμ‚¬μ΄νŠΈ κ°„ ν†΅μ‹ μ—μ„œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€. μ‚¬μš©μžμ™€ μ„œλ²„ κ°„μ˜ 데이터 κ΅ν™˜μ„ μ•”ν˜Έν™”ν•˜λ―€λ‘œ μ€‘κ°„μ—μ„œμ˜ 데이터 κ°€λ‘œμ±„κΈ°λ₯Ό λ°©μ§€ν•˜κ³  기밀성을 μœ μ§€ν•©λ‹ˆλ‹€.

2. 이메일 λ³΄μ•ˆ

μ „μžμš°νŽΈ μ„œλΉ„μŠ€μ—μ„œ λ©”μΌμ˜ 기밀성을 보μž₯ν•˜κΈ° μœ„ν•΄ SSL/TLSκ°€ μ‚¬μš©λ©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ 메일 μ„œλ²„ κ°„μ˜ 톡신이 μ•”ν˜Έν™”λ˜μ–΄ λ―Όκ°ν•œ 정보가 μœ μΆœλ˜μ§€ μ•Šλ„λ‘ ν•©λ‹ˆλ‹€.

3. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°

λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ μ•ˆμ „ν•œ 연결을 μœ„ν•΄ SSL/TLSκ°€ 적용될 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘μ†ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ 톡신이 λ³΄ν˜Έλ˜μ–΄ 데이터 무결성이 μœ μ§€λ©λ‹ˆλ‹€.

4. VPN (Virtual Private Network)

SSL/TLS 기반 VPN은 원격 지역 κ°„μ˜ μ•ˆμ „ν•œ 톡신을 μ œκ³΅ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ 곡용 λ„€νŠΈμ›Œν¬λ₯Ό 톡해 사섀 λ„€νŠΈμ›Œν¬μ— 접속할 λ•Œ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€.

5. μ•± 톡신

λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ„œλ²„μ™€μ˜ 톡신이 μ•ˆμ „ν•˜κ²Œ 이루어지도둝 SSL/TLSκ°€ ν™œμš©λ©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ„œλ²„ κ°„μ˜ API 호좜이 λ³΄ν˜Έλ˜μ–΄ μ•…μ˜μ μΈ κ°œμž…μ„ λ°©μ§€ν•©λ‹ˆλ‹€.

μž₯단점

μž₯점

  • μ•ˆμ „ν•œ 톡신: 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ μ€‘κ°„μž 곡격을 λ°©μ§€ν•˜κ³ , λ°μ΄ν„°μ˜ κΈ°λ°€μ„±κ³Ό 무결성을 μœ μ§€ν•©λ‹ˆλ‹€.
  • μ‹ λ’°μ„±: SSL/TLSλŠ” 널리 μ‚¬μš©λ˜λ©°, 이둜 인해 μ‹ λ’°μ„± μžˆλŠ” 톡신이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

단점

  • λΆ€ν•˜: μ•”ν˜Έν™” 및 μ•ˆμ „ν•œ 연결을 μœ μ§€ν•˜κΈ° μœ„ν•΄ 일뢀 μ„±λŠ₯ 손싀이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„€μ •μ˜ 어렀움: μ˜¬λ°”λ₯΄κ²Œ κ΅¬μ„±λ˜μ§€ μ•ŠμœΌλ©΄ λ³΄μ•ˆμ— μ·¨μ•½ν•  수 있으며, μ˜¬λ°”λ₯Έ μΈμ¦μ„œ 등이 ν•„μš”ν•©λ‹ˆλ‹€.

예제 μ½”λ“œ

1. Node.jsμ—μ„œμ˜ HTTPS μ„œλ²„ ꡬ성

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('private-key.pem'),
  cert: fs.readFileSync('public-cert.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Hello, Secure World!');
}).listen(443);

2. μ›Ήμ‚¬μ΄νŠΈμ—μ„œμ˜ HTTPS μ‚¬μš©

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Secure Website</title>
</head>
<body>
  <h1>This is a Secure Website using HTTPS</h1>
</body>
</html>

μ—°κ΄€λœ 기술

SSL/TLS와 κ΄€λ ¨λœ κΈ°μˆ λ‘œλŠ” λ‹€μ–‘ν•œ 것듀이 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • HTTPS: SSL/TLS μœ„μ—μ„œ λ™μž‘ν•˜λŠ” μ•ˆμ „ν•œ HTTP ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
  • SSL/TLS μΈμ¦μ„œ: 인증 κΈ°κ΄€(CA)에 μ˜ν•΄ λ°œκΈ‰λ˜λ©°, μ„œλ²„μ˜ 신뒰성을 보μž₯ν•©λ‹ˆλ‹€.
  • Perfect Forward Secrecy (PFS): μ„Έμ…˜ ν‚€κ°€ μœ μΆœλ˜λ”λΌλ„ 이전 톡신 λ‚΄μš©μ΄ ν•΄λ…λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€.
  • HSTS (HTTP Strict Transport Security): ν΄λΌμ΄μ–ΈνŠΈκ°€ 항상 μ•ˆμ „ν•œ 연결을 μ‚¬μš©ν•˜λ„λ‘ κ°•μ œν•˜λŠ” μ •μ±…μž…λ‹ˆλ‹€.

λŒ“κΈ€