인터넷·보안

전자서명은 어떻게 위조를 막을까? 해시와 공개키 검증 원리

2026-10-19 02:09
전자서명은 어떻게 위조를 막을까? 해시와 공개키 검증 원리 representative image

전자서명은 문서 전체를 단순히 암호화하는 방식이 아니라, 문서의 고유한 요약값인 해시를 서명자의 개인키로 서명하고 공개키로 확인하는 방식입니다. 문서가 조금이라도 바뀌면 해시값이 달라져 서명 검증이 실패합니다.


📌 핵심 5줄 요약

1. 전자서명은 문서가 서명 이후 바뀌지 않았는지 확인하는 기술입니다.

2. 해시 함수는 긴 문서를 일정한 길이의 고유한 요약값으로 바꿉니다.

3. 서명자는 해시값에 개인키로 서명하고, 검증자는 공개키로 이를 확인합니다.

4. 문서 내용이 한 글자라도 바뀌면 새 해시값과 서명 검증 결과가 달라집니다.

5. 전자서명 검증은 무결성과 서명자 확인을 돕지만 계약 내용의 진실성까지 보증하지는 않습니다.


📌 목차

01 | 전자서명이 필요한 이유

02 | 전자서명과 이미지 서명의 차이

03 | 해시값은 무엇인가

04 | 해시가 문서 변경을 발견하는 원리

05 | 개인키와 공개키의 역할

06 | 전자서명이 만들어지는 과정

07 | 전자서명을 검증하는 과정

08 | 인증서가 필요한 이유

09 | 실제 문서 위조 사례

10 | 전자서명이 보장하는 것

11 | 전자서명이 보장하지 않는 것

12 | 검증 실패 시 확인할 사항

13 | 안전하게 전자서명을 사용하는 방법


01 | 전자서명이 필요한 이유

종이에 하는 서명은 서명자의 의사 표시와 문서 변경 여부를 판단하는 단서가 됩니다. 온라인 문서에서는 원본 파일을 복사하거나 내용을 수정하기 쉬워, 누가 서명했는지와 서명 뒤 문서가 바뀌지 않았는지를 별도로 확인해야 합니다.

전자서명은 이 문제를 암호학적으로 처리합니다. 서명자의 키와 문서의 내용이 함께 검증되므로 단순히 서명 이미지를 붙이는 것보다 위조 여부를 판단하기 쉽습니다.


02 | 전자서명과 이미지 서명의 차이

문서에 서명 이미지를 삽입하는 방식은 실제 서명처럼 보일 수 있지만, 이미지가 복사되었는지 문서가 수정되었는지를 자동으로 확인하지 못합니다. 다른 사람이 서명 이미지를 복사해 새 문서에 붙여도 외관만으로는 구분하기 어렵습니다.

반면 디지털 방식의 전자서명은 문서 내용과 서명값이 연결됩니다. 서명된 파일의 본문, 첨부파일, 서명자 정보 중 검증 대상이 바뀌면 검증 결과에 영향을 줄 수 있습니다.


03 | 해시값은 무엇인가

해시는 파일이나 문서를 해시 함수에 넣어 얻는 고정 길이의 값입니다. 같은 입력은 같은 해시값을 만들지만, 입력이 달라지면 다른 값이 나오는 성질을 이용합니다.

해시값만 보고 원문을 복원할 수 있도록 설계된 기능은 아닙니다. 따라서 해시는 문서의 내용을 숨기는 암호화와 목적이 다릅니다. 전자서명에서는 문서 전체를 직접 처리하기보다 해시값을 서명 대상으로 삼아 효율적으로 검증합니다.


04 | 해시가 문서 변경을 발견하는 원리

서명할 때 문서에서 해시값을 계산합니다. 이후 수신자가 받은 문서에서 다시 해시값을 계산했을 때 두 값이 일치해야 합니다.

예를 들어 계약서의 금액에서 숫자 하나가 바뀌거나 문장에 문자가 추가되면 문서의 해시값도 달라집니다. 기존 서명은 원래 해시값에 연결되어 있으므로 변경된 파일에서는 검증이 실패하게 됩니다.


05 | 개인키와 공개키의 역할

개인키는 서명자만 보관해야 하는 비밀 정보입니다. 서명 생성에 사용되며, 다른 사람이 개인키를 확보하면 서명자를 사칭할 위험이 있습니다.

공개키는 검증을 위해 다른 사람에게 제공할 수 있는 키입니다. 공개키로는 해당 서명값이 대응하는 개인키로 만들어졌는지 확인할 수 있지만, 일반적으로 공개키에서 개인키를 역산할 수 없도록 설계됩니다.

구분확인할 내용
개인키서명 생성에 사용하며 외부에 노출하면 안 됩니다.
공개키서명 검증에 사용하며 인증서 등을 통해 배포할 수 있습니다.
서명값문서 해시와 개인키를 이용해 만들어진 검증 데이터입니다.

06 | 전자서명이 만들어지는 과정

첫째, 서명 프로그램이 문서의 해시값을 계산합니다. 둘째, 서명자의 개인키로 해시값에 서명해 서명값을 만듭니다. 셋째, 문서와 서명값, 공개키 또는 인증서 관련 정보가 함께 전달됩니다.

이때 개인키가 문서 전체를 암호화해 저장한다는 뜻은 아닙니다. 실제 구현은 사용하는 전자서명 알고리즘과 파일 형식에 따라 달라질 수 있지만, 핵심은 문서의 해시와 개인키를 연결하는 것입니다.


07 | 전자서명을 검증하는 과정

검증자는 먼저 받은 문서의 해시값을 다시 계산합니다. 다음으로 공개키를 사용해 서명값에서 서명 당시의 해시와 일치하는지 확인합니다.

두 값이 일치하면 해당 공개키와 연결된 개인키로 서명이 만들어졌고, 검증 대상 문서가 서명 이후 변경되지 않았다는 의미가 됩니다. 어느 하나라도 다르면 문서 변경, 잘못된 공개키, 손상된 파일, 지원되지 않는 서명 형식 등을 의심할 수 있습니다.


08 | 인증서가 필요한 이유

공개키만 전달받으면 그 키가 정말 특정 사람이나 기관의 것인지 별도로 확인해야 합니다. 인증서는 공개키와 소유자 정보를 연결하고, 이를 신뢰할 수 있는 발급 체계에서 확인하도록 돕습니다.

따라서 전자서명 검증에서는 서명 자체뿐 아니라 인증서의 대상, 유효 상태, 발급 경로, 검증 시점에 사용할 수 있는지 등을 함께 확인합니다. 프로그램에 ‘서명 유효’가 표시되어도 서명자 이름과 문서의 계약 상대방이 일치하는지는 사람이 확인해야 합니다.


09 | 실제 문서 위조 사례

정상적으로 서명된 계약서의 금액이나 계좌번호를 편집 프로그램으로 바꾸면, 변경된 파일의 해시값이 원래 서명 당시 값과 달라집니다. 이 경우 문서 뷰어가 전자서명을 지원한다면 ‘문서가 변경됨’ 또는 ‘서명 검증 실패’와 같은 표시가 나타날 수 있습니다.

다만 공격자가 서명 검증 정보가 제거된 파일을 다시 보내거나, 서명되지 않은 새 파일을 정상 문서처럼 설명할 가능성도 있습니다. 파일 이름이나 겉모양만 믿지 말고 서명 정보가 실제로 포함되어 있는지 확인해야 합니다.


10 | 전자서명이 보장하는 것

전자서명은 주로 세 가지를 확인하는 데 도움을 줍니다. 첫째, 서명값이 특정 개인키와 연결되는지 확인합니다. 둘째, 서명된 뒤 문서가 변경되었는지 확인합니다. 셋째, 서명 시점과 인증서 상태 등 검증에 필요한 정보를 제공할 수 있습니다.

이 특성 때문에 전자계약, 전자세금계산서, 소프트웨어 배포 파일, 이메일 서명 등에서 문서와 데이터의 무결성을 확인하는 데 활용됩니다.


11 | 전자서명이 보장하지 않는 것

전자서명이 유효하다고 해서 계약 내용이 사실이라는 뜻은 아닙니다. 서명자가 계약 내용을 충분히 이해했는지, 서명할 권한이 있었는지, 거래 상대방이 제공한 정보가 정확한지는 별도로 확인해야 합니다.

또한 이메일 계정이나 서명 서비스 계정이 탈취된 상태에서 서명되었다면 기술적으로 유효한 서명이더라도 분쟁이 생길 수 있습니다. 비밀번호, 다중 인증, 기기 보안과 같은 계정 보호가 함께 필요한 이유입니다.


12 | 검증 실패 시 확인할 사항

먼저 원본 파일이 아닌 변환본이나 인쇄 후 재스캔한 파일인지 확인합니다. PDF를 다른 형식으로 저장하거나 페이지를 병합하는 과정에서 서명 정보가 깨질 수 있습니다.

그다음 서명 패널에서 문서가 서명 이후 변경되었는지, 인증서의 이름과 발급 정보를 확인합니다. 검증 프로그램이 해당 서명 형식을 지원하지 않을 수도 있으므로, 임의로 경고를 무시하기보다 발신자에게 원본 파일과 검증 방법을 다시 요청하는 것이 안전합니다.


13 | 안전하게 전자서명을 사용하는 방법

서명 전에는 문서의 최종본인지, 첨부파일과 별지까지 포함되는지, 금액·기간·계좌정보가 정확한지 확인합니다. 서명 요청 링크는 메신저나 이메일의 표시 이름보다 실제 주소와 접속한 서비스의 도메인을 확인해야 합니다.

개인키나 인증서 파일을 다른 사람에게 전송하지 말고, 출처가 불분명한 프로그램에 가져오지 않는 것이 좋습니다. 서명 후에는 파일을 다시 내려받아 검증하고, 원본과 서명 시점의 안내 메일을 함께 보관하면 추후 확인에 도움이 됩니다.


☑ 체크리스트

  • 서명 대상 문서가 최종본인지 확인합니다.
  • 서명자 이름과 계약 상대방의 정보가 일치하는지 확인합니다.
  • 문서 뷰어의 서명 패널에서 검증 결과를 확인합니다.
  • 서명 이후 문서가 변경되었다는 경고가 없는지 살펴봅니다.
  • 인증서의 대상과 유효 상태를 확인합니다.
  • 서명 요청 링크의 도메인과 발신 경로를 점검합니다.
  • 서명 완료본과 관련 안내 기록을 안전하게 보관합니다.

📖 자주하는 질문 Q&A

전자서명은 문서를 암호화하는 것인가요?

항상 그렇지는 않습니다. 전자서명의 핵심은 문서의 해시값과 서명자의 개인키를 연결해 무결성과 서명자 정보를 검증하는 것입니다. 문서 내용을 숨기려면 별도의 암호화가 필요할 수 있습니다.

공개키를 다른 사람에게 알려줘도 되나요?

공개키는 이름처럼 검증에 공개할 수 있는 정보입니다. 다만 공개키가 실제 서명자와 연결되는지는 인증서와 신뢰할 수 있는 발급 경로를 통해 확인해야 합니다.

전자서명이 유효하면 계약 내용도 무조건 안전한가요?

아닙니다. 전자서명은 서명과 문서 변경 여부를 확인하는 기술입니다. 계약 내용의 사실성, 서명자의 권한, 피싱이나 계정 탈취 여부는 별도로 점검해야 합니다.

서명 검증에 실패하면 문서가 위조된 것인가요?

반드시 그렇다고 단정할 수는 없습니다. 파일 변환, 서명 형식 미지원, 인증서 상태 확인 실패 등 기술적 원인도 있습니다. 다만 검증 실패 상태에서 중요한 문서를 그대로 믿거나 제출하지 말고 원본과 검증 방법을 다시 확인해야 합니다.


📝 마무리

전자서명은 문서의 해시값을 개인키로 서명하고 공개키로 검증해 문서 위조와 변경을 발견하는 기술입니다. 서명 결과만 보지 말고 인증서 정보, 문서 변경 여부, 서명자의 권한과 계정 보안까지 함께 확인해야 안전하게 활용할 수 있습니다.

#전자서명 #전자서명 원리 #전자서명 위조 #전자서명 검증 #해시 #해시값 #공개키 #개인키 #공개키 암호 #디지털 서명 #디지털 인증서 #인증서 검증 #문서 무결성 #데이터 무결성 #본인 인증 #전자계약 #전자문서 #온라인 서명 #암호화 #비대칭키 암호 #서명값 #서명 검증 #위변조 방지 #중간자 공격 #피싱 주의 #인증기관 #공개키 검증 #해시 함수 #전자서명 확인 방법 #보안 상식