본문 바로가기
IT/security

#5 디지털 서명

by 내일은교양왕 2025. 5. 10.

프롤로그
어떻게 컴퓨터가 사람처럼 사인할 수 있지? 라는 질문에서 출발하여, 비대칭키 + 해시 + 인증의 조합을 한눈에 이해할 수 있도록 구성
 
개념
"이건 내가 보냈고, 안 바뀌었어"를 증명하는 전자 도장
2가지를 증명
1. 진짜 내가 보냈다 (위조 불가)
2. 내용이 안 바뀌었다 (변조 불가)
 
비유
실물 계약서의 서명
실물: 계약서에 싸인 → "내가 동의했음" + "이 내용으로 계약했음"
디지털: 전자문서에 서명 → "내가 보냈음" + "이 내용 그대로임" > 단순히 이름만 적는 게 아니라, 수학적으로 위조/변조를 막는 방식!
 
어떻게 작동할까? (3단계 요약)
📌 디지털 서명 과정은 딱 3단계입니다.
 
서명 시 - 보내는 쪽
1. 원본 문서 → 해시함수로 요약
2. 이 해시값을 → 개인키로 암호화
3. 원본 문서 + 서명을 함께 보냄
 
검증 시 - 받는 쪽
1. 원본 문서 → 같은 해시함수로 요약
2. 서명(암호화된 해시)을 공개키로 복호화
3. 둘이 같으면 → "진짜 보낸 사람" + "내용 그대로"
 
특징
① 왜 해시를 쓰지?
문서가 수천 줄이라도, 해시값은 고정된 64자리
해시 → 데이터 요약 + 위조 감지용 지문 > 즉, 전체 문서를 암호화하지 않고도 신뢰성 보장 가능
 
② 왜 개인키/공개키를 쓰지?
개인키로 암호화 → “나만 할 수 있는 행동”
공개키로만 복호화 가능 → 누구나 검증 가능 > 이 조합이 “서명 = 내가 했다”를 증명해줌
 
서명이 없다면 생기는 일

  • 누가 보낸 건지 모름
  • 중간에 내용이 바뀌었는지 모름
  • 법적/계약적 책임을 증명할 수 없음 → 그래서 디지털 서명은 전자 계약, 이메일 보안, 인증서 등에서 핵심 역할

 
어디에 쓰이나?

사용처 설명
전자계약 계약서 원본에 서명 → 위변조 방지
소프트웨어 배포 실행 파일에 서명 → 안전한 프로그램인지 확인
블록체인 거래 데이터에 서명 → 거래 위조 방지
인증서(SSL) 인증서 발급자 서명 → 진짜인지 검증 가능

 
요약

  • 디지털 서명 = 해시 + 개인키 암호화
  • 개인키로 서명하고, 공개키로 검증
  • 원본이 바뀌면 해시가 달라져서 위조/변조 즉시 감지
  • 전자계약, 인증서, 블록체인에 반드시 사용됨

 

부록

비대칭과 디지털 서명 쪽에서 헷갈리는게.. 비대칭에서는 공개키로 암호화 한다고 하고 디지털 서명에서는 비공개키로 암호화 한다고 하는데, 암호화로 뭘 해도 상관 없는건지..

 

비대칭키는 두 가지 방식으로 쓸 수 있지만, 목적에 따라 쓰임새가 다르다.

사용 목적 암호화 방향 의미
기밀성 보장 (비밀 전달) 공개키로 암호화 → 개인키로 복호화 → 다른 사람은 못 읽고, 수신자만 읽게
진위 증명(서명) 개인키로 암호화 → 공개키로 복호화 → 나만 만들 수 있고, 모두가 확인 가능

 

왜 둘 다 "암호화"라고 부르는데 다르게 쓰일까? > 비대칭키에서 암호화는 "잠금", 복호화는 "열기"라고 생각하면 쉽다.

  • 공개키로 잠그는 것: 누구나 잠글 수 있지만, 개인키가 없으면 열 수 없음 → 정보 보호 목적
  • 개인키로 잠그는 것: 나만 잠글 수 있고, 공개키로 누구나 열 수 있음 → 누가 했는지 증명 목적

그래서 정리하자면

  • 비대칭 암호화(기밀 통신) → 공개키로 암호화하고, 개인키로만 복호화 → "이건 너한테만 보이게"
  • 디지털 서명(진짜 보냈는지 증명) → 개인키로 해시값을 암호화하고, 공개키로 검증 → "이건 내가 보냈다는 증거"