한양과학기술고등학교

에듀테크 프로젝트 대시보드

공개키 암호화

🔐 공개키 암호화 (Public Key Cryptography)

자물쇠(공개키)는 온 세상에 뿌리고, 그 자물쇠를 여는 열쇠(개인키)는 나만 갖는다. "어떻게 처음 보는 사람과 비밀 대화를 시작할까?"라는 문제를 푸는 아이디어를 애니메이션과 진짜로 계산되는 미니 RSA로 살펴본다.

1대칭키 vs 비대칭키(공개키)

암호화에 쓴 키로 그대로 복호화하면 대칭키, 암호화 키와 복호화 키가 다르면 비대칭키다. 대칭키는 빠르지만 "그 키를 어떻게 안전하게 건네주지?"가 문제고, 공개키는 이 열쇠 배달 문제를 없앤다.

🔑 대칭키 (예: AES)

  • 하나의 비밀키로 잠그고 = 똑같은 키로 연다
  • 연산이 매우 빠르다 → 대용량 데이터에 적합
  • 단점: 상대에게 키를 미리 안전하게 전달해야 함
  • n명이 서로 통신하면 키가 n(n−1)/2개 필요

🗝️ 공개키 / 비대칭키 (예: RSA)

  • 공개키로 잠그면 = 짝이 되는 개인키로만 열림
  • 공개키는 아무나 알아도 안전 (자물쇠만 배포)
  • 연산이 느리다 → 보통 "대칭키 배달용"으로만 씀
  • 개인키로 잠그면 = 공개키로 검증 → 디지털 서명
2자물쇠 비유 — 앨리스가 밥에게 비밀 편지 보내기

밥은 공개 자물쇠🔒를 누구에게나 나눠준다. 앨리스는 그 자물쇠로 상자를 잠가 보내고, 개인 열쇠🗝️를 가진 밥만 열 수 있다. 중간에서 훔쳐봐도 자물쇠는 열지 못한다.

👩 앨리스
보내는 사람
📦
공개 네트워크 (도청 가능)
🧔 밥
받는 사람 · 키 소유자
밥의 공개키 🔒 (모두 배포됨) 밥의 개인키 🗝️ (밥만 보유)
대기 중… 버튼을 눌러보세요.
3진짜로 계산되는 미니 RSA

RSA는 "큰 수의 소인수분해는 매우 어렵다"에 기댄다. 아래는 원리를 보기 위한 아주 작은 숫자 버전이다. 실제로는 600자리 이상의 소수를 쓴다.

1 < e < φ(n), gcd(e, φ(n)) = 1
0 ≤ m < n 인 정수
🔒 암호화 (공개키 e, n 사용)
🗝️ 복호화 (개인키 d, n 사용)
공격자는 n과 e, 암호문 c를 모두 볼 수 있다. 하지만 d를 구하려면 n을 p·q로 소인수분해해서 φ(n)을 알아내야 한다 — 수가 충분히 크면 지구의 모든 컴퓨터를 동원해도 수십억 년이 걸린다.
4현실에서는 어떻게 쓰일까

🌐 HTTPS / TLS 핸드셰이크

  • 브라우저가 서버의 공개키(인증서)로 대칭키 재료를 암호화해 전달
  • 이후 실제 데이터는 빠른 대칭키(AES)로 주고받음
  • 공개키는 "대칭키를 안전하게 배달"하는 데만 잠깐 사용

✍️ 디지털 서명 · 인증

  • 보낸 사람이 개인키로 문서 해시를 암호화 = 서명
  • 누구나 공개키로 풀어 위·변조 여부 확인
  • SSH 로그인, 코드 서명, 블록체인 지갑 서명 등에 사용