전자계약 위변조 방지 원리: SHA-256 해시와 해시체인 쉽게 이해하기

전자계약 위변조 방지는 전자계약을 처음 도입할 때 가장 많이 확인해야 하는 부분입니다. 무료 전자계약이라고 해서 보안이 약한 것이 아니고, 비싼 전자계약이라고 해서 자동으로 더 안전한 것도 아닙니다.
중요한 것은 문서가 저장될 때 어떤 기준값을 남기고, 나중에 그 값으로 원본 여부를 다시 확인할 수 있느냐입니다. 문서박사는 SHA-256 문서 해시, 테넌트 단위 체인 해시, 무결성 배지, 공개 검증 페이지를 이용해 문서와 업무 데이터의 변경 여부를 확인할 수 있게 구성되어 있습니다.

SHA-256 해시는 문서의 지문입니다
SHA-256 해시는 문서 내용으로 만든 64자리 고유 문자열입니다. 같은 입력값이면 항상 같은 해시가 나오고, 입력값이 조금이라도 달라지면 전혀 다른 해시가 나옵니다.
예를 들어 아래 두 문장은 사람 눈에는 거의 같아 보여도 해시는 완전히 달라집니다.
"계약금액 5,000,000원" → 3a4f2c91...
"계약금액 5,000,001원" → e2b817d4...
문서박사는 문서 전체 HTML을 무작정 해시하지 않습니다. 문서 종류별로 검증에 중요한 핵심값을 정규화한 뒤 SHA-256 해시를 계산합니다. 예를 들어 계약서는 문서번호, 제목, 조항, 상대방 정보가 기준값이 되고, 견적서는 문서번호, 거래처명, 품목, 총액, 날짜가 기준값이 됩니다.
이렇게 하면 화면 레이아웃이나 렌더링 방식이 조금 달라도, 실제 업무 판단에 중요한 데이터가 같은지 확인하기 좋습니다.
해시체인은 기록을 사슬처럼 이어둡니다
문서 해시는 한 건의 문서가 저장 당시와 같은지 확인하는 기준입니다. 해시체인은 여기에서 한 단계 더 나아가, 기록들을 시간순으로 연결합니다.
문서박사는 document_hashes에 기록을 남길 때 최신 문서 해시만 저장하지 않습니다. 직전 기록의 chainHash를 함께 가져와 새 chainHash를 계산합니다.
구조를 단순화하면 이렇습니다.
1번 기록 체인 = SHA256(1번 문서 해시 + 이전 체인 없음 + 기록 시각)
2번 기록 체인 = SHA256(2번 문서 해시 + 1번 체인 + 기록 시각)
3번 기록 체인 = SHA256(3번 문서 해시 + 2번 체인 + 기록 시각)
중간 기록의 문서 해시나 기록 시각이 바뀌면 해당 기록의 체인 해시가 달라지고, 그 다음 기록과의 연결도 맞지 않게 됩니다. 그래서 플랫폼 관리 화면과 연구노트 검증에서는 테넌트 단위 체인이 정상인지 확인할 수 있습니다.
전자계약에서는 무엇이 남나요?
전자계약에는 두 종류의 중요한 기록이 있습니다.
첫째, 계약서 자체의 문서 무결성 기록입니다. 계약서가 저장될 때 문서번호, 제목, 조항, 상대방 정보 같은 핵심값으로 contentHash가 계산되고, 이 값이 체인에 연결됩니다. 계약서 미리보기와 서명 인증서에는 이 문서 해시를 확인할 수 있는 흐름이 들어갑니다.
둘째, 서명 과정의 감사 로그입니다. 서명 요청, 링크 열람, 서명 완료 같은 이벤트는 별도의 서명 로그에 남고, 각 로그도 이전 로그 해시와 연결됩니다. 서명 인증서에는 발급번호, 발급일시, 문서 정보, 문서 해시, 서명 요청/열람/완료 흐름, IP 같은 확인 정보가 정리됩니다.
이 구조는 “PDF 파일 하나만 믿는 방식”과 다릅니다. PDF 사본은 전달 과정에서 여러 번 복사될 수 있지만, 시스템에 남은 문서 해시와 서명 흐름은 검증 기준으로 다시 확인할 수 있습니다.
무결성 배지로 현재 문서를 다시 비교합니다
문서박사의 견적서, 계약서, 업로드 계약서, 증명서, 공문, 내부결재, 거래처 화면에는 무결성 배지가 붙어 있습니다.
무결성 버튼을 누르면 최신 저장 해시를 가져오고, 현재 문서 데이터를 다시 읽어 같은 방식으로 해시를 재계산합니다. 두 값이 같으면 원본 무결성 확인됨으로 표시되고, 다르면 무결성 불일치 감지가 표시됩니다.
검증 창에서는 문서 해시, 체인 해시, 기록 시각을 확인할 수 있습니다. 즉, 단순히 “안전합니다”라는 문구만 보여주는 것이 아니라 실제 검증 기준값을 보여주는 방식입니다.
공개 검증 페이지에서 해시를 확인할 수 있습니다
문서박사는 로그인하지 않아도 해시를 확인할 수 있는 공개 검증 페이지를 제공합니다.
- 검증 URL:
https://doc.treeru.com/verify - 입력값: 문서 해시 또는 체인 해시
- 확인 결과: 문서 유형, 발행 사업자, 기록 시각, 문서 해시, 체인 해시
전자계약 서명 인증서에 표시된 문서 해시를 검증 페이지에 입력하면 문서박사에 등록된 기록인지 확인할 수 있습니다. 상대방이나 내부 검토자가 별도 계정 없이 확인할 수 있다는 점이 중요합니다.
어떤 업무 데이터에 적용되나요?
문서박사의 해시 기록은 계약서에만 한정되지 않습니다.
- 견적서와 확장 견적서
- 계약서와 업로드 계약서
- 증명서와 공문
- 내부결재
- 거래처
- 서류보관 파일
- 영업활동
- 이메일 발송 기록
- 고객 문의
- 연구노트, 연구 기록, 연구 파일, 확인 서명
- 회원가입 기록
업무 데이터마다 해시 기준값은 다릅니다. 예를 들어 거래처는 거래처명, 사업자번호, 대표자명이 기준이고, 연구 기록은 제목, 본문, 작성자, 버전, 챕터가 기준입니다. 중요한 것은 각 데이터의 성격에 맞는 핵심값을 기준으로 해시를 남긴다는 점입니다.
해시체인이 모든 문제를 대신 해결해주지는 않습니다
해시체인은 위변조 여부를 확인하는 기술적 기준입니다. 하지만 그 자체가 모든 법적 판단을 자동으로 끝내는 것은 아닙니다.
분쟁에서는 계약 당사자, 발송·열람·서명 흐름, 이메일 기록, 첨부 파일, 대화 이력 같은 자료를 함께 봐야 합니다. 문서박사의 해시와 인증서는 그중 “저장 당시 핵심 데이터와 현재 데이터가 일치하는지”, “기록 흐름이 중간에서 끊기지 않았는지”를 설명하는 데 도움을 주는 자료입니다.
과장된 보안 문구보다 중요한 것은 재현 가능한 검증 구조입니다.
무료 전자계약도 검증 구조가 중요합니다
전자계약을 고를 때 “무료인가, 유료인가”만 보면 판단이 흐려집니다. 실제로 봐야 할 것은 아래 질문입니다.
- 문서 저장 시 해시가 남는가?
- 해시 기준값이 문서 종류에 맞게 정리되어 있는가?
- 기록이 시간순 체인으로 연결되는가?
- 현재 문서와 저장 해시를 다시 비교할 수 있는가?
- 상대방도 공개 검증 페이지에서 확인할 수 있는가?
- 서명 과정의 발송, 열람, 서명 흐름이 남는가?
문서박사는 무료로 시작할 수 있지만, 견적서·계약서·거래처·연구노트 같은 주요 업무 데이터에 무결성 기록을 남기는 구조를 갖추고 있습니다.
전자계약 위변조 방지 구조를 직접 확인하고 싶다면 문서박사에서 무료로 계약서를 만들어보세요. 계약서 미리보기의 무결성 배지와 서명 인증서의 문서 해시, 공개 검증 페이지까지 한 번에 확인할 수 있습니다.