PE Notes · 보안
해시·MAC·전자서명
무결성만 보는 MDC, 공유키로 인증까지 가는 MAC, 개인키로 부인 방지까지 여는 전자서명과 이중서명을 계층으로 비교합니다.
암호문은 내용을 숨깁니다. 누가 보냈는지, 중간에 바뀌지 않았는지는 다른 도구입니다. 는 임의 길이를 고정 요약으로 접어 무결성을 보고, 은 공유 비밀을 더해 보낸 쪽을 가리며, 은 개인키로 까지 엽니다. 이 글은 세 층을 한 비교표에 올립니다.
해시와 MDC·MAC
해시는 같은 입력이면 항상 같은 출력이고, 한 비트가 바뀌면 절반 가까이가 뒤집힙니다. 요약에서 원문을 되돌리기 어렵고, 다른 문장으로 같은 요약을 만들기도 어렵습니다.
| 성질 | 한 줄 |
|---|---|
| 일방향성 | 해시에서 원문을 복원하지 못한다. |
| 약한 충돌 내성 | 주어진 문장과 같은 해시를 찾기 어렵다. |
| 강한 충돌 내성 | 아무 두 문장의 해시 충돌을 찾기 어렵다. |
| 눈사태 효과 | 입력 1비트가 출력의 절반을 바꾼다. |
| 결정론 | 같은 입력은 같은 출력. |
는 키 없이 해시만 계산합니다. 파일이 바뀌었는지는 보이지만, 누가 계산했는지는 모릅니다. MAC은 메시지와 공유키를 같이 넣습니다. 이 대표입니다. 키를 아는 양쪽이 모두 만들 수 있어 부인 방지는 없습니다.
| 비교축 | MDC | MAC | 전자서명 |
|---|---|---|---|
| 키 | 없음 | 대칭 공유키 | 비대칭 개인키 |
| 무결성 | 있다 | 있다 | 있다 |
| 인증 | 없다 | 있다 | 있다 |
| 부인 방지 | 없다 | 없다 | 있다 |
| 예 | SHA-256 체크섬 | HMAC-SHA256 | RSA-SHA256, ECDSA |
| 자리 | 배포 무결성 | TLS 레코드, API | 계약, 인증서 |
블록 암호 토픽의 AEAD가 “암호+인증”을 한 모드로 묶는다면, 여기서 MAC은 그 인증 반쪽의 고전 이름입니다.
전자서명
서명은 메시지 해시를 보내는 쪽 개인키로 접고, 받는 쪽은 공개키로 펼쳐 해시와 맞춥니다. 공개키 주인을 인증서가 보증하면, 나중에 “나는 안 보냈다”고 말하기 어렵습니다.
| 쪽 | 동작 |
|---|---|
| 송신 | M → h(M) → 개인키로 S. M과 S를 같이 보낸다. |
| 수신 | M에서 h(M)을 다시 만들고, S를 공개키로 풀어 비교한다. |
속도 때문에 실제 데이터는 대칭키로 암호화하고, 서명과 키 교환만 비대칭에 맡깁니다. 양자 토픽의 Dilithium이 이 서명 칸을 바꿉니다.
이중서명
전자상거래에서는 가게에 카드 번호를 보여 주지 않고, 은행에는 장바구니를 보여 주지 않으면서, 두 정보가 한 거래임을 증명해야 합니다. SET의 이 그 분리입니다.
| 대상 | 받는 것 | 보장 |
|---|---|---|
| 가맹점 | 주문 + 결제 해시 + 이중서명 | 주문 무결성, 결제와의 연동. 카드 본문은 모름. |
| 은행 | 결제 + 주문 해시 + 이중서명 | 결제 무결성, 주문과의 연동. 장바구니는 모름. |
생성은 주문 해시와 결제 해시를 이어 다시 해시한 뒤, 그 값을 고객 개인키로 서명합니다. 프라이버시 분리와 거래 묶음이 한 서명에 들어 있습니다.