본문으로 건너뛰기

인증서 개요와 암호 이론 기초

I. 인증서가 푸는 문제​

인터넷에서 상대방과 암호화 통신을 하려면 상대의 공개키가 필요합니다. 그런데 근본 문제가 있습니다.

"지금 받은 이 공개키가 정말 그 서버(은행)의 것인가, 아니면 중간자(MITM)가 바꿔치기한 것인가?"

인증서(Certificate) 는 이 질문에 답합니다. 인증서는 본질적으로:

인증서 = 공개키 + 신원정보(도메인/조직) + 신뢰기관(CA)의 디지털 서명

즉 "이 공개키는 이 신원의 것이 맞다" 를 신뢰할 수 있는 제3자(CA)가 서명으로 보증한 문서입니다. 이 바탕을 이해하려면 암호 3요소를 알아야 합니다.

II. 대칭키 vs 비대칭키 암호​

구분대칭키비대칭키(공개키)
키하나(비밀키 공유)쌍(공개키 + 개인키)
속도빠름느림
키 배포어려움(먼저 공유해야)공개키는 공개해도 됨
예AES, ChaCha20RSA, ECC(타원곡선)

핵심 성질(비대칭키):

  • 공개키로 암호화 → 개인키로만 복호화 (기밀성)
  • 개인키로 서명 → 공개키로 검증 (인증·무결성)

:::info 실제로는 둘을 함께 쓴다 (하이브리드) 비대칭키는 느려서 데이터 전체를 암호화하지 않습니다. 대신 비대칭키로 "대칭 세션키"를 안전하게 교환하고, 실제 데이터는 빠른 대칭키(AES)로 암호화합니다. TLS가 바로 이 방식입니다. (04. 인증 로직) :::

III. 해시(Hash)​

임의 길이 데이터를 고정 길이 지문으로 바꾸는 일방향 함수입니다.

SHA-256("hello") → 2cf24dba5fb0a30e... (항상 256비트)

성질:

  • 일방향성: 해시값으로 원문 복원 불가
  • 충돌 저항성: 다른 입력이 같은 해시를 갖기 매우 어려움
  • 눈사태 효과: 1비트만 바뀌어도 해시가 완전히 달라짐

→ 무결성 검증과 디지털 서명의 핵심 재료. (MD5·SHA-1은 충돌이 발견되어 폐기, 현재 SHA-256 이상 사용)

IV. 디지털 서명 — 인증서의 심장​

디지털 서명은 "이 데이터를 내가(개인키 소유자) 만들었고, 위변조되지 않았다" 를 증명합니다.

[서명 생성] 서명자
1) 데이터의 해시 계산: h = Hash(data)
2) 개인키로 해시 서명: sig = Sign(개인키, h)
→ (data + sig) 전송

[서명 검증] 검증자
1) 받은 데이터 해시: h' = Hash(data)
2) 공개키로 서명 해제: h = Verify(공개키, sig)
3) h == h' 이면 → 진짜(서명자가 만들었고 위변조 없음)

왜 성립하나:

  • 개인키는 서명자만 가지므로, 공개키로 검증되면 그 서명자가 만든 것 (인증·부인방지)
  • 해시를 비교하므로 1비트라도 바뀌면 검증 실패 (무결성)

:::tip 인증서 = "CA가 서명한 데이터" 인증서의 내용(공개키+신원)에 대해 CA가 자신의 개인키로 디지털 서명한 것이 바로 인증서입니다. 그래서 우리는 CA의 공개키로 인증서의 서명을 검증해 "이 인증서는 진짜 CA가 발급했다"를 확인합니다. (03. 신뢰 체인) :::

V. 세 가지 보장​

인증서 기반 통신(TLS)이 제공하는 것:

보장수단
기밀성대칭키(AES)로 데이터 암호화 (키는 비대칭키로 교환)
무결성해시 + MAC/AEAD로 위변조 탐지
인증인증서 + 디지털 서명으로 상대 신원 확인

VI. 결론​

인증서는 "공개키를 신원에 묶고, CA가 서명으로 보증"하는 장치이며, 그 작동은 비대칭키 + 해시 + 디지털 서명 위에 서 있습니다. 다음 문서에서 이 인증서가 실제로 어떤 구조(X.509)로 되어 있는지 봅니다.