본문 바로가기
system_fundamentals/security_cryptography

공개키/개인키 용례에 따른 목적과 용법

by 죄니안죄니 2026. 5. 18.
반응형
공개키/개인키 자체는 같은 개념인데 
“누가 키쌍을 만들었느냐”, 
“무엇을 증명하려 하느냐” 에 따라
사용 방식(용도), 목적이 달라진다.

먼저 가장 중요한 핵심

공개키 암호는 기본적으로:

공개키로 암호화 → 개인키로 복호화
 

또는

개인키로 서명 → 공개키로 검증
 

이라는 두 기능이 있어.


그래서 용도가 2개로 갈라짐 : 1. 암호화 목적 vs. 2. 서명(인증) 목적


1. 암호화 용도

대표:

  • HTTPS 초기 키교환
  • PGP 암호화
  • 공개키로 비밀 전달

이 경우

서버가 키쌍 생성

SERVER_PUBLIC_KEY
SERVER_PRIVATE_KEY
 

공개키는 공개

왜냐면:

누구든 서버에게 안전하게 암호 보내게 하려고
 

.

예시

클라이언트가:

AES 세션키
 

를 서버 공개키로 암호화.

그러면

서버 개인키 가진 서버만 복호화 가능
 

.

이건 “비밀 전달” 목적

즉:

공개키 = 자물쇠

개인키 = 열쇠

개념.


HTTPS에서 이 느낌

클라이언트
↓ 서버 공개키로 암호화
[암호문]
↓
서버 개인키로 복호화
 

2. 서명(인증) 목적

대표:

  • JWT 서명
  • 전자서명
  • WebAuthn
  • 코드서명

이 경우는 반대 느낌

사용자/서버가 개인키로 서명

SIGN(data)
 

공개키는 검증용

누구든:

공개키로
"진짜 이 개인키 주인이 만든 서명인가?"
 

검증 가능.

이건 “신원 증명” 목적

즉:

개인키 = 도장

공개키 = 도장 진위 확인기

느낌.


WebAuthn은 이 방식

여기서 엄청 중요.

Passkey/WebAuthn에서는

사용자 기기가 키쌍 생성

USER_PUBLIC_KEY
USER_PRIVATE_KEY
 

.

서버는 공개키 저장만 함

로그인 시:

challenge
↓
개인키 서명
↓
공개키 검증
 

.

여기서는 공개키가 암호화용이 아님

많이 헷갈리는 부분.

WebAuthn 공개키 역할

복호화용 X
신원 검증용 O
 

.


그래서 차이가 생겨 보이는 이유

정리하면:

HTTPS 키교환

목적

비밀 전달
 

공개키 역할

암호화
 

개인키 역할

복호화
 

WebAuthn / 전자서명

목적

신원 증명
 

개인키 역할

서명
 

공개키 역할

검증
 

같은 RSA/ECC라도 사용 방향이 다름

즉:

공개키 암호 시스템
 

하나로:

  • 암호화
  • 서명

둘 다 가능.


실무에서는 요즘 ECC 기반 많음

예:

  • TLS
  • WebAuthn
  • Passkey

전부 ECC 계열 많이 씀.

대표:

  • ECDSA (서명)
  • ECDHE (키교환)

진짜 핵심 개념

공개키 암호는 사실:

“수학적으로 연결된 키쌍”

이고,

그 키쌍을:

비밀 전달에 쓰느냐
 

or

신원 증명에 쓰느냐
 

에 따라 역할이 달라 보이는 거야.


한 줄로 정리

HTTPS 키교환

공개키로 숨기고
개인키로 푼다
 

WebAuthn / 전자서명

개인키로 서명하고
공개키로 검증한다
 

이 차이야.

신뢰 문제와 암호화

현대 인터넷의 핵심 문제는 사실 단순하다.

"상대를 믿을 수 없는 환경에서
어떻게 안전하게 통신할 것인가?"
 

이 문제를 해결하기 위해 등장한 기술이 바로 암호화다.


1. 인터넷은 기본적으로 신뢰할 수 없는 환경

인터넷은:

  • 공개 네트워크
  • 수많은 중간 경유지
  • 누구나 접근 가능
  • 공격자도 동일 네트워크 사용

이라는 특징을 가진다.

즉 데이터는:

내 PC → 공유기 → ISP → 중간 라우터 → 서버
 

처럼 여러 장비를 거쳐 이동한다.

문제는 이 과정에서:

  • 누군가 데이터를 볼 수도 있고
  • 변조할 수도 있고
  • 가짜 서버로 위장할 수도 있다는 것

이다.


2. 신뢰 문제는 인터넷 전체에 존재한다

인터넷에서 가장 어려운 건:

"지금 통신 중인 상대가 진짜인가?"
 

를 증명하는 것이다.

예를 들어:

  • 진짜 은행 서버인가?
  • 진짜 회사 API인가?
  • 중간 공격자가 위장한 서버는 아닌가?

를 알기 어렵다.


3. 암호화 이전의 인터넷은 매우 위험했다

초기 HTTP는 평문 통신이었다.

예:

 
POST /login

id=admin
password=1234
 

이 데이터가 그대로 네트워크를 이동했다.

즉 중간에서 패킷을 캡처하면:

아이디와 비밀번호를 그대로 볼 수 있었다
 

4. 암호화는 "신뢰를 수학적으로 만드는 기술"

많은 사람들이 암호화를 단순히:

데이터 숨기기
 

정도로 생각한다.

하지만 실제 본질은 더 크다.

암호화는:

신뢰를 수학적으로 검증 가능하게 만드는 기술
 

이다.

즉:

  • 누가 보냈는지
  • 중간에 바뀌지 않았는지
  • 진짜 서버인지
  • 데이터가 안전한지

를 수학적으로 증명한다.


5. 암호화가 해결하는 신뢰 문제

암호화는 크게 3가지 문제를 해결한다.


1) 기밀성 — 남이 못 보게

예:

  • HTTPS
  • VPN
  • AES 암호화

중간 공격자가 데이터를 봐도:

해독할 수 없게 만든다
 

2) 무결성 — 중간 변조 방지

예:

  • Hash
  • HMAC
  • 전자서명

데이터가 조금이라도 바뀌면:

검증 실패
 

가 발생한다.


3) 인증 — 진짜 상대인지 확인

예:

  • TLS 인증서
  • 공개키 암호화
  • CA(Certificate Authority)

서버가:

"나는 진짜 네이버 서버다"
 

를 증명한다.


6. HTTPS는 신뢰 문제 해결 시스템이다

HTTPS는 단순 암호화가 아니다.

실제로는:

  • 공개키 암호화
  • 대칭키 암호화
  • 전자서명
  • 인증서
  • Hash
  • 키교환

이 모두 합쳐진:

인터넷 신뢰 시스템
 

에 가깝다.


7. 왜 공개키 암호화가 혁명적이었나

과거에는:

"같은 비밀키를 미리 공유"
 

해야 했다.

문제는 인터넷에서는:

처음 만나는 상대와도 통신해야 한다
 

는 점이다.

공개키 암호화는:

  • 공개키는 공개
  • 개인키는 서버만 보관

하는 방식으로:

처음 보는 상대와도 안전한 통신
 

을 가능하게 만들었다.


8. 결국 현대 인터넷은 "암호화 위에서 동작"

현재 인터넷 서비스 대부분은:

  • 로그인
  • 결제
  • API
  • 클라우드
  • 모바일 앱
  • OAuth
  • JWT
  • VPN

전부 암호화 기반이다.

즉 현대 인터넷은 사실상:

암호화가 없으면 성립 불가능한 구조
 

라고 봐도 된다.


9. Zero Trust 보안 철학도 같은 맥락

현대 보안은:

아무도 기본적으로 믿지 않는다
 

를 전제로 한다.

즉:

  • 내부망도 신뢰하지 않고
  • 사용자도 신뢰하지 않고
  • 요청도 신뢰하지 않고
  • 패킷도 신뢰하지 않는다

그래서 모든 요청에 대해:

  • 인증
  • 검증
  • 서명 확인
  • 암호화

를 수행한다.


10. 암호화의 본질

결국 암호화의 핵심은:

신뢰할 수 없는 환경에서
신뢰를 만드는 것
 

이다.

그리고 현대 인터넷은:

수학적 신뢰 위에 구축된 시스템
 

이라고 볼 수 있다.

 

 

 

🔗 보안_암호학 목차로 

반응형

'system_fundamentals > security_cryptography' 카테고리의 다른 글

XSS  (0) 2026.05.19
쿠키 보안 옵션  (0) 2026.05.18
FIDO/WebAuthn  (0) 2026.05.18
Refresh Token 구조  (0) 2026.05.18
OAuth2는 왜 이렇게 복잡한가  (0) 2026.05.18

댓글