**디지털 서명(Digital Signature)**은
전자 문서의 **무결성(Integrity)**과 **서명자의 신원(인증, Authentication)**을 보장하기 위해
공개키 기반(PKI: Public Key Infrastructure) 암호기술을 이용하여 생성된 전자적 서명 정보입니다.
즉, 문서가 변경되지 않았고, 누가 서명했는지를 수학적으로 증명하는 전자 서명 방식입니다.
| 목적 | 설명 |
|---|---|
| 무결성 (Integrity) | 서명된 문서가 위·변조되지 않았음을 증명 |
| 인증 (Authentication) | 문서를 서명한 주체가 누구인지 증명 |
| 부인 방지 (Non-repudiation) | 서명자가 나 아니라고 발뺌할 수 없게 만듦 |
디지털 서명의 핵심은 해시 + 비대칭 암호화 조합입니다.
[송신자 A] [수신자 B]
1. 문서 생성
↓
2. 해시 생성 (H = Hash(문서))
↓
3. 서명 생성 (S = Encrypt(H, A의 개인키))
↓
4. 문서 + 서명 전송 ─────────────→
↓
수신자가 복호화 및 확인
5. H' = Hash(수신한 문서)
6. Decrypt(S, A의 공개키) → H''
7. H'와 H'' 비교
⇒ 같으면 유효한 서명
원본 문서 작성
예: "계약서 내용 A"
해시 생성
H = Hash(문서) → 고정 길이의 해시값 생성개인키로 암호화
S = Encrypt(H, 개인키)원본 문서 + 서명(S) 전송
원본 문서로 해시값 계산
H' = Hash(문서 수신본)공개키로 서명 복호화
H'' = Decrypt(S, 공개키)두 해시값 비교 (H' == H'')
| 구성요소 | 설명 |
|---|---|
| 해시 함수 | SHA-256, SHA-3 등. 문서를 고정 길이로 압축 |
| 비대칭 키 쌍 | RSA, DSA, ECDSA 등. 개인키 ↔ 공개키 사용 |
| 서명 생성기 | 해시값을 개인키로 암호화 |
| 서명 검증기 | 공개키로 복호화한 해시와 수신 문서 해시 비교 |
| 항목 | 설명 |
|---|---|
| 비대칭 키 사용 | 개인키로 서명, 공개키로 검증 |
| 데이터 무결성 | 문서 변경 여부 탐지 가능 |
| 인증성 확보 | 공개키가 특정 사용자와 연결되어 있음 (인증서 기반) |
| 부인 방지 | 개인키로 생성된 서명은 서명자 외 생성 불가 |
| 분야 | 적용 예시 |
|---|---|
| 전자정부 | 전자문서, 공문, 전자세금계산서 등 |
| 금융 | 전자계약, 송금 서명, 블록체인 트랜잭션 |
| 소프트웨어 | SW 배포 파일에 서명 (예: .exe, .apk 등) |
| 인증서 | SSL/TLS, 공인인증서 등 |
| 구분 | 장점 | 단점 |
|---|---|---|
| 보안성 | 위조 및 변조 방지 | 개인키 유출 시 보안 위협 |
| 신뢰성 | 인증된 사용자만 서명 가능 | 서명 생성 속도 느림 |
| 법적 효력 | 법률상 전자서명으로 효력 인정 가능 | 구현이 복잡할 수 있음 |
디지털 서명은 전자 문서에 도장을 찍는 방법이에요.
A가 문서에 자기만의 비밀번호(개인키)로 도장을 찍고,
B는 A의 도장을 확인해서 "진짜 A가 보낸 거네!",
그리고 "문서도 안 바뀌었네!" 하고 믿을 수 있어요.