오늘 끝나면
디지털 서명
- ✓디지털 서명의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 디지털이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
내가 보냈다는 증명, 위조 불가 — 공개키를 거꾸로 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
암호 & 보안 · 08
디지털
서명
공개키를 거꾸로 쓰면 위조 불가능한 서명이 된다. 내가 보냈고 한 글자도 안 고쳐졌다는 사실을 증명한다.
암호화는 잠그기, 서명은 그 반대
암호화는 공개키로 잠그고 개인키로 푼다. 누구나 잠글 수 있지만 푸는 건 개인키 주인뿐이다.
서명은 방향이 정반대다. 개인키로 서명하고, 공개키로 검증한다. 만드는 건 나만 가능하고 확인은 누구나 할 수 있다.
같은 키쌍을 반대로 쓴 것뿐이다. 잠그기에 쓰면 비밀이 지켜지고, 서명에 쓰면 신원이 증명된다.
개인키는 나만 가진 도장
위조가 안 되는 이유는 개인키를 세상에서 나 하나만 갖고 있기 때문이다.
그 개인키로 만든 서명은 나만 만들 수 있다. 도장 원본을 나만 가진 것과 같다. 남이 흉내 내려면 내 개인키가 있어야 하는데, 그건 구할 수 없다.
반대로 공개키는 누구에게 뿌려도 된다. 그걸로는 검증만 된다. 확인은 되지만 새 서명은 못 만들기 때문에 안전하다.
| 주체 | 서명 | 검증 |
|---|---|---|
| 개인키 (나)서명 만들기 + 검증 | ✓ | ✓ |
| 공개키 (모두)검증만 가능 | ✗ | ✓ |
| 공격자위조 불가 | ✗ | ✓ |
직접 서명하고 검증해 보기
개인키로 서명하면 서명값이 나오고, 공개키로 검증하면 유효(파랑)가 뜬다. 진짜 그 사람이 보냈고 안 고쳐졌다는 뜻이다.
메시지를 한 글자만 바꾸면 검증이 바로 무효(빨강)로 깨진다. 한 글자 변조도 즉시 잡힌다.
먼저 개인키로 서명해 보자. 그 다음 메시지를 1글자 고치고 검증해 본다.
한 글자만 바뀌어도 서명이 깨진다
한 글자 변조까지 잡는 비결은 해시다. 메시지 전체를 짧은 숫자 하나로 요약한다.
글자가 하나만 바뀌어도 그 숫자가 완전히 달라진다. 서명은 원본의 해시에 묶여 있어서, 내용이 바뀌면 검증할 때 숫자가 안 맞아 무효가 된다.
정리하면 서명은 두 가지를 한꺼번에 증명한다. 누가 보냈나(개인키) 와 안 바뀌었나(해시)다. 둘 다 맞아야 유효다.
100만원 보냄
해시 = 1304
200만원 보냄
해시 = 2026
1을 2로 한 글자 바꾸니 해시가 전부 달라지고 서명이 깨진다
서명이 보장하는 것, 못 하는 것
서명은 만능이 아니다. 보장하는 게 정확히 둘이다. 인증과 무결성이다.
인증은 누가 보냈는지, 무결성은 내용이 안 바뀌었는지를 말한다. 그런데 서명은 내용을 가려주진 않는다. 메시지 자체는 누구나 그대로 읽을 수 있다.
비밀유지는 암호화의 몫이다. 둘은 따로 노는 도구다. 실제 시스템은 보통 서명 + 암호화를 같이 쓴다.