Skip to content
Haorio Lab
Go back

전자봉투와 전자서명, 쉽게 이해하기

전자문서를 주고받을 때 가장 중요한 두 가지 질문이 있다.

“이 문서가 정말 내가 보낸 건가?” “내가 보낸 것을 나중에 부정할 수 있는가?”

전자봉투와 전자서명은 이 질문에 각각 다른 방식으로 답한다. 둘 다 암호학을 쓰지만, 목적과 쓰임이 다르다.

전자봉투 (Digital Envelope)

목적: 기밀성 (Confidentiality)

내가 상대방만 볼 수 있도록 내용을 보호하고 싶을 때 쓴다.

원리

  1. 대칭키로 본문을 암호화

    • AES-256 같은 대칭 암호화 알고리즘으로 문서 내용을 암호화한다.
    • 속도가 빠르다.
  2. 대칭키를 수신자 공개키로 암호화

    • 암호화된 대칭키를 수신자의 공개키로 다시 암호화한다.
    • 암호화된 대칭키 = 전자봉투
  3. 봉투와 암호문 전송

    • 암호화된 본문 + 암호화된 대칭키를 함께 보낸다.
    • 수신자만 자신의 개인키로 봉투를 뜯어 대칭키를 복호화할 수 있다.
    • 대칭키로 본문을 복호화하면 원문을 알 수 있다.
[암호화된 본문] + [수신자 공개키로 암호화된 대칭키] = 전자봉투

특징

항목설명
누가 보는가수신자만
어떤 키를 쓰나본문: 대칭키 / 키 교환: 공개키
대표 알고리즘AES(본문) + RSA 또는 ECIES(키 교환)

전자서명 (Digital Signature)

목적: 인증 (Authentication) + 부인방지 (Non-repudiation) + 무결성 (Integrity)

내가 보낸 것을 내가 보낸 것을 증명하고, 내가 보낸 것을later否定할 수 없게 하고 싶을 때 쓴다.

원리

  1. 해시로 문서의 지문(fingerprint)을 만듲

    • SHA-256 같은 해시 함수로 문서 내용을 고정 길이 문자열로 변환한다.
    • 원본이 조금만 바뀌어도 해시값이 완전히 달라진다.
  2. 해시값을 서명자 개인키로 암호화

    • 해시값을 서명자의 개인키로 암호화한 것이 전자서명이다.
    • 공개키로 복호화하면 원래 해시값이 나오고, 원본과 비교하여 검증한다.
  3. 문서와 서명을 함께 전송

    • 원본 문서 + 전자서명(해시를 개인키로 암호화한 것)을 보낸다.
    • 수신자는 서명자의 공개키로 서명을 복호화하여 해시값을 꺼낸다.
    • 원본 문서를 해시한 값과 비교하여 일치하면 서명이 유효하다.
[원본 문서] + [발신자 개인키로 암호화된 해시값] = 전자서명

특징

항목설명
누가 보는가누구나 (검증 가능한 공개키가 있어야)
어떤 키를 쓰나서명: 개인키 / 검증: 공개키
대표 알고리즘RSA-SHA256, ECDSA
시간 검증서명 시 타임스탬프를 함께 첨부하는 경우가 많음

비교: 전자봉투 vs 전자서명

구분전자봉투전자서명
핵심 목적기밀성인증 + 부인방지 + 무결성
누구의 키를 쓰나수신자의 공개키발신자의 개인키
누가 복호화하나수신자만누구나 (공개키로)
원본 문서항상 암호화됨평문으로 전송 (서명과 함께)
흔한 오해”서명한 문서 = 서명된 사람만 볼 수 있다” ❌

흔한 오해 바로잡기

오해 1: “전자서명하면 문서가 암호화된다”

❌ 틀림. 전자서명은 문서를 숨기는 게 아니라 서명者的인증을 추가하는 것이다. 문서 내용은 보통 평문으로 간다. 기밀성이 필요하면 전자봉투를 동시에 사용한다.

오해 2: “전자봉투에는 서명이 없다”

△ 반만 맞음. 전자봉투는 키 교환에만 공개키 암호화를 쓰지, 서명 목적이 아니다. 키 교환 시 authenticated encryption (AEAD)을 쓰면 부가적으로 무결성·인증이 붙기도 한다.

실전 조합: 두 가지를 동시에 쓸 때

보안이 중요한 실제 시스템에서는 두 가지를 함께 쓴다.

발신자:
1. 본문을 AES-256으로 암호화 (전자봉투)
2. AES 키를 수신자 공개키로 암호화
3. 본문 해시를 발신자 개인키로 서명 (전자서명)
4. [암호문 + 암호화된 키 + 서명]을 전송
수신자:
1. 서명을 발신자 공개키로 검증
2. 암호화된 키를 수신자 개인키로 복호화
3. AES 키로 암호문 복호화하여 본문 확인

이 구조는 S/MIME, PGP/OpenPGP, TLS 등의 프로토콜에서 실제로 쓰인다.

마무리

둘 다 공개키 암호화의 응용이지만, 각각 다른 문제를 풀기 위해 다른 키를 쓴다. 차이를 이해하면 평문에 서名を 하면 문제가 없도록 생각하는安易한 설정을 피할 수 있다.


Share this post on:

Next Post
웹쉘 공격의 매커니즘과 대응방안