반응형



전자서명(Digital signature)은 한 줄로 말하면:
"이 데이터는 진짜 내가 만들었고,
중간에 변조되지 않았다"
를 증명하는 기술이다.
먼저 중요한 점
전자서명은:
암호화가 목적이 아니다
즉:
- 비밀 숨기기 ❌
- 진짜 작성자 증명 ⭕
이다.
핵심 역할 2개
전자서명은:
| 역할 | 의미 |
| 인증(Authentication) | 진짜 그 사람이 만든 것 |
| 무결성(Integrity) | 중간에 안 바뀜 |
을 보장한다.
어떻게 가능하냐?
핵심은:
해시 + 개인키
조합이다.
전체 흐름 먼저
문서
↓
해시 생성
↓
해시를 개인키로 서명
↓
전자서명 생성
STEP 1 — 문서 해시
문서를 해시한다.
h = H(m)
예:
"HELLO"
↓
A1B2C3...
왜 해시를 쓰나?
문서 전체를 직접 서명하면:
- 너무 느림
- 데이터 큼
그래서:
문서 요약본(hash)
만 사용한다.
STEP 2 — 개인키로 서명
여기서 핵심.
그 해시를:
개인키로 처리
한다.
RSA 기준 느낌:
S = h^d mod n
결과
전자서명(signature)
생성.
STEP 3 — 문서 + 서명 전송
상대방에게:
문서
+
전자서명
보낸다.
STEP 4 — 검증
받은 사람은:
문서 다시 해시
h_1 = H(m)
공개키로 서명 검증
RSA 느낌:
h_2 = S^e mod n
비교
h1 == h2
면 검증 성공.
의미
검증 성공했다는 건:
1. 개인키 가진 사람이 만들었고
2. 내용이 안 바뀌었다
는 뜻이다.
왜 위조가 어려운가?
전자서명 위조하려면:
개인키 필요
하다.
근데 개인키는 본인만 갖고 있다.
왜 변조 검출 가능한가?
문서가 한 글자만 바뀌어도:
해시 완전 변경
된다.
즉:
원본 해시 ≠ 현재 해시
되어 검증 실패.
쉽게 비유하면
해시
문서 지문
개인키
본인 도장
공개키
도장 진위 확인 도구
암호화와 차이 매우 중요
| 방식 | 목적 |
| 공개키로 암호화 | 비밀 보호 |
| 개인키로 서명 | 작성자 증명 |
실제 HTTPS에서 사용
HTTPS 인증서도 전자서명 기반이다.
예:
- Let's Encrypt
- DigiCert
같은 CA가:
"이 공개키는 진짜 네이버 것"
이라고 전자서명한다.
브라우저는 공개키로 검증한다.
코드 서명도 동일
예:
- Windows exe
- Android APK
- iOS 앱
전부 전자서명 사용.
Git도 비슷한 개념 가능
GPG 서명 commit:
"진짜 이 개발자가 작성"
증명 가능.
핵심 한 줄
전자서명은:
문서의 해시를 개인키로 서명하고,
상대방이 공개키로 검증해서
작성자와 무결성을 증명하는 기술
이다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| RBAC (0) | 2026.05.15 |
|---|---|
| 인증과 인가 차이 (0) | 2026.05.15 |
| DH / ECDHE (0) | 2026.05.14 |
| ECC는 왜 RSA를 대체하는가 (0) | 2026.05.14 |
| RSA가 느린 이유 (0) | 2026.05.14 |
댓글