사전적 의미로 서명은 자신만의 고유한 필체로 성명을 타인이 알아볼 수 있도록 기록한 것을 의미하는데
보통 일상에 카드 결제할 때, 어떤 문서를 확인했을 때, 약관 등에 동의 했을 때, 연봉 통보에 동의 했을 때
등 사용하게 됨.
일반적으로 서명은 아래와 같은 기능을 한다고 볼 수 있어.
1. 서명자 인증 : 자신의 고유한 필체로 자신이 이 문서에 서명 했음(동의/합의)을 증명
2. 합의 내용 변경 불가 : 자신이 서명한 문서의 내용이 상호 합의한 내용이고 변경되지 않았음을 증명
3. 서명 사실 부인 불가 : 내 필체로 서명한 거니까 부인도 불가능
연봉 협상 서류에 서명을 하는 경우(모두싸인 같은거 말고 종이에 서명하는 경우)
보통 같은 내용이 적힌 두장의 서류가 준비되어 있고, 각각의 종이에 협상 참가자들이
각자 서명을 하고 최종적으로 두장의 종이를 이어놓고 가운데 서명을 한번 더 하거나
요즘은 없지만 은행에서 어디 서명하면 뒤에 먹지로 같은 내용에 똑같이 서명된 종이를 주던
것 등이 2번을 위한 것이라고 볼 수 있음.
아무튼 시대가 디지털 시대로 넘어오면서 서명 방식에도 변화가 생겼는데,
디지털 서명과 같은 전자 서명이 나타난 것.
디지털 서명은 간단하게 말하면 공동 인증서, 네이버 인증서, 카카오 인증서과 같은 인증서를 사용하는
방식이고 전자 서명은 여기 전자 인감,날인(스캔을 하던 포토샵으로 그리던)이 모두 포함되는 형태임.
해외에서는 전자 인감/날인 + 디지털 서명까지 PDF에 적용하는 방식으로 공식적으로 이용되고
우리나라도 전자 서명이 법적 효력이 있음
디지털 서명은 전자 서명의 부분집합이다 라고 생각하면 편함.
여기서 디지털 서명에 대해 좀 더 써볼까 하는데
이 서명 방법은 기본적으로 '암호화'에 기반한 방식임.
컴퓨터에서 사용하는 암호화는 크게 대칭 암호 방식과 비대칭 암호 방식이 있음.
1. 대칭 암호: 암호화 / 해독에 같은 키가 사용되는 방식
2. 비대칭 암호: 암호화 / 해독에 서로 다른 키가 사용되는 방식
여기서 디지털 서명에는 비대칭 암호 방식이 사용됨.
비대칭 암호 방식에는 공개 키 / 개인 키 라는 개념이 존재하는데
문붕쿤 A에게 공개키와 개인키를 각각 Pub(A), Pri(A) 라고 하면
Pub(A) 를 통해 암호화 한 내용은 Pri(A)로만 해독이 가능하고
Pri(A)로 암호화 한 내용은 Pub(A)로만 해독이 가능함.
개인 키는 말 그대로 자신이 가지고 있고(위 예에서 문붕쿤 A)
공개 키는 자신과 비밀 친구가 되기 위한 임의의 대상들에게 전달함.
비밀 친구들이 문붕쿤 A에게 메시지를 보낼 때 공개 키 Pub(A) 로
메시지를 암호화해서 보내면 문붕쿤 A는 Pri(A)로 내용을 해독
이 방식을 이용하면 암호화는 공개키를 전달 받은 누구나 할 수 있지만
내용 확인은 오직 문붕쿤 A만 가능함
더 자세히 알고 싶다면 RSA 암호화를 알아서 검색해서 보도록 하자.
아무튼 이 방식을 어떻게 서명에 사용하는 걸까?
인증서라는것이 여기서 등장한다.
인증서는 말그대로 '내가 문붕쿤이다' 를 나타내는 인증서임.
이 인증서에는 아래와 같은 내용이 포함되어 있어.
1. 문붕쿤 A의 공개키
2. 문붕쿤 A의 식별자
3. 인증서 발급 업체 식별자
4. 서명 방식(요약 방식 및 암호화 방식이라고 생각하자)
5. 유효날짜 등
보통 자신이 발급받은 인증서에는 개인키도 따로 있음.
하지만 서명 이후 상대에게 전달되는 문서에 포함되는 인증서는 개인키는 포함 X
그러면 디지털 서명이 어떻게 진행되는지 간단하게 살펴보자
가정 시나리오)
문붕쿤 A가 자신의 인증서에 포함된 개인키로
- 서명 절차
1) 서명하고자 하는 문서를 가져온다.
2) 문서를 요약한다(이게 서명 방식에 포함되어 있다)
3) 요약된 내용을 문붕쿤 A의 개인키로 암호화한다.
4) 암호화한 내용을 문서 끝에 붙여 전송한다.
- 서명 유효성 확인 절차
1) 서명된 문서를 가져온다.
2) 서명을 제외한 원문 문서의 내용을 요약한다.
3) 서명을 문붕쿤 A의 공개키로 해독한다. (요약된 내용이 나옴)
4) 문서의 요약 내용이 같은지 확인한다.
위에서 해시 함수가 요약 방식이라고 생각하면 되고
메시지 다이제스트가 문서 요약본이다.
예제를 통해 알아보자
문붕쿤 A가 아래와 같은 문서에 서명을 진행하려고 한다.
서명 방식에 각 행의 첫글자만 따와서
문서를 요약한다고 약속이 되어있다고 가정하자.
-----------문서-----------
씨발
기만자
새끼야
--------------------------
문붕쿤 A는 문서를 요약한다
---------요약-------
씨기새
--------------------
문붕쿤 A는 요약본을 암호화한다.
암호화는 복잡하니까 그냥 대충 암호문이 나왔다고 가정
-------암호문-------
sgs
--------------------
그러면 이제 서명된 문서는 아래와 같은 형태가 될 것임
--------문서--------
씨발
기만자
새끼야
--------------------
문붕쿤 A 인증서
서명 : sgs
--------------------
이 문서가 문붕쿤 A가 서명한 문서인 것을 검증해보자.
인증서에 포함된 서명 방식을 통해 요약 방식을 알아냈다.
이 방식으로 요약본을 얻어낸다.
----------요약------------
씨기새
--------------------------
인증서에 포함된 문붕쿤 A의 공개키를 이용해
서명을 해독한다.
---------암호------------
sgs
---------해독------------
씨기새
-------------------------
이 과정을 통해 인증서에 표기된 사용자의 서명인 것이 증명된다.
여기서 위에 비밀친구들과의 통신과 다른 것은
비밀 친구들이
A의 공개키로 암호화해서
A가 개인키로 해독하지만
인증 과정에서는
A의 개인키로 암호화한 것을
A의 공개키를 가진 사람들이 해독한다는 것이다.
이 이유는 아래 설명
말만 들어서는 아리까리한데, 전자 서명에서 보장해야하는 내용들을 통해
이 서명이 유효한 것임을 이해해보자
1. 서명자 인증
서명을 한 사람이 누구인지 임의의 대상들이 모두 알 수 있어야 한다.
인증서에 서명자 식별자를 통해 달성
2. 위조 불가능
서명을 다른 사람이 위조할 수 없어야한다.
개인키를 통해서 서명이 생성되기 때문에 위조가 불가능
3. 부인 방지
인증서에 포함된 공개키로 서명이 해독되고 이게 요약본과 일치한다면
서명자의 개인키로 암호화 된 것이기 때문에 서명 사실을 부정할 수 없음
4. 변조 방지
예제에서 문서의 요약본 생성 방식을 단순하게 표현했지만 실제론
띄어쓰기 하나만 추가해도 내용이 완전히 달라지는
단방향 암호화를 사용함.
이로인해 서명된 문서에서 서명 부분은 추출한 뒤 문서 본문을 수정하게 되면
요약 내용이 달라지기 때문에 서명 유효성이 검증됬다면
서명된 문서가 변조되지 않았다는 것을 의미
5. 재사용 불가
마찬가지로 문서별로 요약본이 달라지고 이로인해 서명 결과값이 달라지기
때문에 다른 문서의 서명을 가져와서 사용하는 것이 불가능함.
여기서 1번 조건 때문에 인증 과정에서는 공개키로 암호화 하는 것이 아닌
개인키로 암호화를 하는 것.
만일 공개키로 암호화를 해서 서명을 한다면,
누구나 A의 서명을 생성할 수 있다.
또한 서명의 검증은 개인키를 가진 문붕쿤 A만 검증할 수 있으니
1번 조건이 만족되지 않음.
하지만 개인키로 암호화한다면
서명 검증을 위해 공개키를 요청하여 받은 다수가 서명을 해독하여
서명을 검증할 수 있게됨.
문붕쿤들도 서명할 일이 생기면 멋드러진 만년필을 꺼내서
디지털 서명값을 계산해서 서명해보도록 하자.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.