1일 1CS(Computer Science)

대칭키 및 비대칭키 암호화 방식에 대해서 설명해주세요.

표자 2025. 6. 17. 09:44

🔐 암호화의 두 얼굴: 대칭키 vs 비대칭키 완전 정복!

안녕하세요! 오늘은 백엔드 개발에서 꼭 알아야 할 암호화 방식에 대해 알아보겠습니다 🚀

🤔 암호화가 뭐길래?

일상생활로 예를 들어볼게요! 친구에게 비밀편지를 보낸다고 생각해보세요 📝

  • 평문: "오늘 치킨 먹자!"
  • 암호문: "dkfej dCls ahwkwk!"
  • : 암호문을 만들고 해독하는 비밀번호

🔑 대칭키 암호화 (Symmetric Key)

개념

같은 열쇠 하나로 잠그고 여는 방식이에요! 🗝️

실생활 예시

  • 집 현관문 🏠: 같은 열쇠로 잠그고 열어요
  • 은행 금고 💰: 같은 비밀번호로 잠그고 열어요
  • 카카오톡 비밀채팅 💬: 같은 암호로 메시지를 보내고 받아요

장점 ✅

  • 속도가 빨라요!
  • 컴퓨터 자원을 적게 사용해요
  • 대용량 데이터 처리에 좋아요

단점 ❌

  • 키 전달이 위험해요 😰 (누가 가로채면 끝!)
  • 사람이 많아질수록 키 관리가 복잡해져요
    • 10명이면 45개의 키가 필요! (10×9÷2)

Next.js에서 자주 사용하는 경우

  • JWT 토큰 암호화
  • 세션 데이터 암호화
  • 데이터베이스 민감정보 저장

🔐 비대칭키 암호화 (Asymmetric Key)

개념

서로 다른 두 개의 열쇠를 사용하는 방식이에요! 🔑🔑

  • 공개키 (Public Key): 모든 사람이 볼 수 있는 열쇠 📢
  • 개인키 (Private Key): 나만 가지고 있는 비밀 열쇠 🤫

실생활 예시

  • 우편함 📮: 누구나 편지를 넣을 수 있지만(공개키), 나만 열어볼 수 있어요(개인키)
  • 디지털 서명 ✍️: 내가 쓴 글임을 증명하는 도장 같은 역할

두 가지 사용 방법

1️⃣ 암호화 목적 (데이터 보호)

송신자: 수신자의 공개키로 암호화 🔒
수신자: 자신의 개인키로 복호화 🔓

2️⃣ 서명 목적 (신원 확인)

송신자: 자신의 개인키로 서명 ✍️
수신자: 송신자의 공개키로 검증 ✅

장점 ✅

  • 키 교환 문제 해결! 🎉
  • 많은 사람과 안전하게 통신 가능
  • 신원 확인 가능 (디지털 서명)

단점 ❌

  • 속도가 느려요 🐌 (대칭키 대비 100~1000배)
  • 컴퓨터 자원을 많이 사용해요

Next.js에서 자주 사용하는 경우

  • HTTPS 통신 (SSL/TLS)
  • OAuth 인증
  • API 키 검증
  • Git commit 서명

🤝 하이브리드 방식 (실제 사용법)

실제로는 두 방식을 함께 사용해요!

  1. 비대칭키대칭키를 안전하게 전달 🔐
  2. 대칭키로 실제 데이터를 빠르게 암호화 ⚡

HTTPS가 바로 이런 방식이에요! 🌐

📚 알아두면 좋은 추가 정보

대표적인 알고리즘들

  • 대칭키: AES, DES, 3DES
  • 비대칭키: RSA, ECC, DSA

Node.js에서 간단 예시

const crypto = require('crypto');

// 대칭키 (AES)
const key = crypto.randomBytes(32);
const cipher = crypto.createCipher('aes256', key);

// 비대칭키 (RSA)
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
  modulusLength: 2048
});

보안 강도 비교

  • 대칭키 128bit비대칭키 3072bit 🔒

💡 개발자가 알아야 할 포인트

  • 대용량 파일: 대칭키 사용 📁
  • 키 교환: 비대칭키 사용 🔄
  • 실시간 채팅: 하이브리드 방식 💬
  • API 인증: JWT(대칭) + HTTPS(비대칭) 🔐

📝 면접 답변

"대칭키는 암호화와 복호화에 같은 키를 사용하는 방식으로 속도가 빠르지만 키 전달이 위험합니다. 비대칭키는 공개키와 개인키 쌍을 사용하여 키 교환 문제를 해결하지만 속도가 느립니다. 실제로는 HTTPS처럼 비대칭키로 대칭키를 안전하게 전달한 후, 대칭키로 데이터를 암호화하는 하이브리드 방식을 주로 사용합니다."


 

대칭키 및 비대칭키 암호화 방식에 대해서 설명해주세요.

백엔드와 관련된 질문이에요.

평문을 암호화하고 복호화하는 경우 키를 사용할 수 있는데요. 이때, 암복호화에 사용하는 키가 동일한 경우 대칭키 암호화(Symmetric Key Cryptography) 라고 하며, 암복호화에 사용하는 키가 서로 다른 경우를 비대칭키 암호화 혹은 공개키 암호화(Asymmetric Key Cryptography) 라고 합니다.

 

대칭키 암호화는 비대칭키 암호화에 비해서 속도가 빠르다고 알려져 있습니다. 하지만, 대칭키를 교환하는 과정에서 탈취 위험성이 존재할 수 있습니다. 또한, 대칭키 암호화 방식에서는 각 통신 참여자 쌍마다 다른 키가 필요할 수 있는데요. 이 경우 통신 대상이 많아질수록 대칭키의 수가 많아지므로 키 관리가 복잡해질 수 있습니다.

 

비대칭키 암호화에는 공개키와 개인키가 존재합니다. 일반적으로 이 방식에서 송신자는 수신자의 공개키를 이용해 암호화를 수행하고, 암호화된 데이터는 수신자에게 전달됩니다. 수신자에게 전달된 이후, 수신자는 개인키를 사용해 복호화를 수행합니다. 이 방식은 대칭키 암호화 방식에서 발생하는 키 교환 문제를 해결하지만, 상대적으로 대칭키 암호화에 비해 느린 것이 단점입니다.

 

비대칭키 암호화에서 개인키로 데이터를 암호화하고, 공개키로 복호화하는 경우도 존재하는데요. 이러한 방식은 암호화를 수행한 자에 대한 검증이나 서명을 위한 용도로 사용됩니다.

728x90