타임스탬프
타임스탬프(timestamp)는 특정한 시각을 나타내는 문자열이다. 둘 이상의 시각을 비교하거나 기간을 계산할 때 편리하게 사용하기 위해 고안되었다. 실제 정보를 타임스탬프 형식에 따라 기록하는 행위를 타임스탬핑(timestamping)이라 한다. 블록체인에서 타임스탬프(timestamp)는 전자문서가 특정한 시점에 존재하고 있었다는 '존재 증명'과 그 이후 데이터가 변경되지 않았다는 '내용 증명'을 해주는 일종의 전자 도장 역할을 한다. [1]
목차
개요[편집]
타임스탬프는 영어의 시간(Time)과 도장을 찍다(Stamp)의 합성어로 어떤 일이 일어난 시간을 기록하는 것을 말한다. 전자문서로 저장된 데이터는 쉽게 수정 가능하므로, 데이터를 생성하거나 수정한 시점을 확인하는 방법에 대하여 이슈가 발생할 수 있다. 이럴 때 타임스탬핑을 사용하면 시점에 대한 증거를 확보하는데 도움이 될 수 있다. 타임스탬프란 전자기록물 의 진본성 및 유효성을 입증하기 위하여 전자기록물이 존재한 시점의 확인 정보를 기록물에 추가적으로 부여한 전자정보를 의미한다. 타임스탬핑은 데이터의 해시값과 현재 시간값을 암호화하여 전자서명한 값으로 타임스탬프 정보를 저장함으로써 무결성과 신뢰성을 보장한다.[2]
특징[편집]
사토시 나카모토는 그의 논문에는 블록체인이라는 용어를 사용하지 않고 그에 해당되는 개념을 타임스탬프 서버(Timestamp Server)로 설명했다. 즉, 그는 논문에서 다음과 같이 언급했다. “이 논문에서 P2P 타임스탬프 서버를 이용하여 거래의 시간 순서를 전산을 통해 이중지불을 해결할 수 있는 방안을 제시하고자 한다.”...“우리가 제시하는 해결책은 타임스탬프 서버에서 시작된다. 타임스탬프 서버는 시간 순으로 기록된 블록들의 해시를 취하고 신문이나 유즈넷포스트처럼 그 해시를 널리 배포하는 역할을 한다. 타임스탬프는 해시의 형태로 취합되기 위해 해당 시간에 그 데이터가 존재했음을 증명한다. 각각의 타임스탬프는 이전 타임스탬프를 해시의 형태로 포함하는 구조로 결국 이전 타임스탬프를 하나씩 연장하는 형태로 체인을 형성한다.”
논리적 타임스탬프[편집]
블록체인의 타임스탬프는 물리적인 시간의 특징을 암호학에 기초한 데이터 구조를 사용하여 다시 구현하였다. 다시 말해, 어떤 사건이 일어난 절대적인 시간을 요구하는 것이 아니라, 전후 관계의 두 사건을 놓고 상대적 시간으로 시간축을 정의한다. 이 말은 사건1과 사건2가 발생한 정확한 시간은 몰라도, ‘사건 1이 사건2 다음에 일어났다’는 상대적 전후관계만을 취급한다는 것이다. 이 개념이 분산시스템의 논리적 타임스탬프이다. 즉, 블록체인은 해시함수를 사용하여 데이터가 존재하기 전에 다른 데이터가 존재했다는 전후 관계를 논리적으로 부정할 수 없는 형태로 정의하고 있다. 참고로 비트코인은 SHA-256이라는 해시함수를 사용하고 있다. [3]
블록 생성 시간[편집]
타임스탬프는 블록의 생성 시간을 나타내는 값이자 그 시간에 검증 가능한 거래가 존재했다는 것을 명백히 입증한다. 블록이 생성된 순간부터 블록에 존재하며 거래 시간을 식별하는 용도로 사용된다. 하지만 블록체인에서는 실제 거래를 생성한 시각과 블록에 정식으로 저장한 시각을 타임스탬프에 저장하는데 두 기록이 일치하지 않아 문제가 발생하기도 한다.
유닉스타임[편집]
Unix time 이란 1970년 1월 1일 0시 0분 0초 (UTC) 로부터 몇 초나 지난것인지를 표현한 것이다.
- 비트코인 블록헤더
- 버전(version) : 해당 블록의 버전 숫자
- 이전 블록 해시(previous block hash) : 이전 블록헤더를 sha256 해시함수를 이용하여 두 번 해싱한 해시값 – SHA256(SHA256( ))
- 머클루트(merkle root) : 해당 블록에 포함된 거래정보의 거래 해시를 2진 트리 형태로 구성할 때 트리의 루트에 위치하는 해시값
- 타임스탬프(timestamp) : 해당 블록의 대략적인 생성 시간, 1970년 01월 01일 이후의 초단위 시간
- 비츠(bits) : 블록의 작업증명 알고리즘에 대한 난이도 해시 목표값
- 논스(nonce) : 특정 목표값보다 낮은 값을 구하기 위한 카운터
비트코인의 타임스탬프는 블록헤더의 구성 요소 중 하나이다.
- 해시에 변화를 주는 입력값으로서의 역할
- 블록체인을 조작하려는 공격이 어렵게 하는 역할
- 이전 11개 블록들의 타임스탬프들의 중간값보다는 커야한다.즉, 11개의 타임스탬프를 시간순서대로 정렬의후 가운데 값 (=6번째 값) 보다는 커야 한다.
- Network-adjusted time 의 중간값 + 2시간 보다는 작아야 한다.[4]
활용[편집]
전자서명 문서[편집]
전자서명은 전세계적으로 그리고 다양한 산업에서 빠르게 채택되고 있다. 그러나 전자서명이 젖은 잉크서명의 법적 구속력이 동일한 값을 가지기 위해서는 전자서명이 적합성 및 감사성 요건을 포함한 법의 요건을 충족해야 한다. 문서의 수령자는 문서가 전자 서명된 시기를 확인할 수 있을 뿐만 아니라, 타임 스탬프 증권의 날짜 이후 문서가 변경되지 않았음을 확인할 수 있다. 타임스탬프를 사용하면 조직은 자신의 지적 재산을 보호하고 타임스탬프를 강력한 법적 감사 가능 증거로 사용할 수 있다.
장기 유효성 검사(LTV)[편집]
LTV는 현재 인증서의 상태(즉, 기한이 지났거나 해지된 경우)에 관계없이 서명이 적용 당시 유효했는지를 확인할 수 있다는 것을 의미한다. 예를 들어, 내가 오늘 유효한 인증서와 신뢰할 수 있는 타임스탬프로 문서에 서명하지만, 내 인증서가 취소되거나 2개월 후에 만료되는 경우, 서명된 문서는 그 이후에도 언제든지 유효해야 한다.서명을 적용할 때 사용하는 프로그램에 따라 LTV를 달성하려면 신뢰할 수 있는 타임스탬프를 서명에 포함시켜야 할 수도 있다. 이 경우, 서명 유효성을 확인하기 위한 기준점으로 타임스탬프를 사용한다. 프로그램에서 현재 인증서 상태가 취소 또는 만료된 것으로 확인되지만 서명이 취소 또는 만료 전에 적용된 경우, 서명에는 여전히 유효한 것으로 표시된다. 대부분의 프로그램은 이것에 대해 신뢰할 수 있는 제3자 타임스탬프를 요구한다. 컴퓨터의 시스템 시계를 사용하는 것은 조작할 수 있기 때문에 신뢰할 수 없다.Microsoft Office 프로그램과 Adobe 버전 6, 7 및 8은 LTV에 대한 타임스탬프가 필요하다. Adobe 9+는 서명 시에 파기 정보(CRL 또는 OCSP)를 내장하고 있어 서명이 적용될 때 인증서의 유효성을 검증하는 것과 동일한 목표를 달성하므로 LTV에 대해서는 타임스탬프가 필요하지 않다.
문서에 서명된 날짜 및 시간에 대한 신뢰 추가[편집]
포스트의 앞부분의 예에서 강조했듯이, 때로는 높은 수준의 확신을 가지고 문서가 실제로 서명되었을 때를 알아야 한다. 이것은 특히 시간에 민감한 거래와 감사 추적과 관련된 시나리오에 중요하다.신뢰할 수 있는 타임스탬프는 독립적으로 검증되고 감사 가능한 날짜와 UTC(조정된 보편 시간) 소스를 사용하여 적용되기 때문에 이러한 시나리오를 지원한다. 이것은 그들이 로컬 시스템 시계처럼 조작의 대상이 아니라는 것을 의미하기 때문에 당신은 서명이 언제 적용되었는지 확실히 알고 있다.
디지털 서명 코드[편집]
위에서 언급한 바와 같이 디지털 서명은 향후의 상태 변화(예: 만료 또는 파기)에도 불구하고 유효성을 유지하기 위해 LTV가 필요하다. 서명 코드의 경우 신뢰할 수 있는 타임스탬프를 추가하여 이를 달성한다.타임스탬프가 없으면 인증서가 만료되거나 해지될 때 서명이 만료되거나 무효화되며 최종 사용자는 코드를 신뢰해서는 안 된다는 무서운 경고 메시지를 보게 된다. 타임스탬프(및 LTV)를 사용하면 서명이 적용될 때 서명 인증서가 유효했기 때문에 서명은 여전히 신뢰할 수 있다.[5]
비교[편집]
시스템 시간 (System Time)[편집]
- 시스템 전체에서 사용하는 시간 기준
예)MPEG 시스템 시간 동기, 망 동기, 타이밍/클럭 등
시간 경과 : 타임스탬프 (Time Stamp)[편집]
- 일반적으로, 어떤 기준 시각(보통, Epoch)부터 경과 시간을 수치값으로 주는 문자열
예) 세계 표준시(UTC)의 자정으로부터 밀리 초 단위로 표시하는 등 예) Unix Timestamp : Unix Epoch (1970-01-01 00:00:00) 부터 경과된 밀리 초
시간 기원 (Epoch)[편집]
- 중요한 사건,변화가 일어난 정적인 시간 기원
예) Unix Epoch : 1970년 1월 1일 새벽 0시 (유닉스 출현 기원) 예) Prime Epoch : 1900년 1월 1일 새벽 0시 (NTP 프로토콜에서 사용하는 기원)[6]
전망[편집]
- 공공기관에서 전자문서 진본성을 위한 일반 기업으로의 확대 방법 제시 필요
- 다양한 문서형식에 대한 타임스탬프 토큰 저장방식 효율성 방안 연구 필요
- 타임스탬프 토큰 링크 토큰 및 체인, Aggregation 연구 및 활용 방안 연구 필요
- 전자문서 진본성에 대한 서비스 활성화를 위한 법제화 연구 및 적용 필요[2]
동영상[편집]
각주[편집]
- ↑ 〈타임스탬프〉, 《위키백과》
- ↑ 2.0 2.1 강혁, 〈TimeStamp를 활용한 전자문서 진본성 확보〉, 《SlidePlayer》, 2010-10
- ↑ 〈블록체인 타임스탬프 (Time Stamp)〉, 《하이노마드》, 2018-11-08
- ↑ , 〈bitcoin block의 timestamp〉, 《티스토리》, 2018-09-07
- ↑ Jun Hosoi, 〈what is a Timestamp?〉, 《GlobalSign 블로그》, 2017-02-10
- ↑ 자재복, 〈Timestamp, Time Stamp, Unix/Linux Epoch 타임스탬프, Unix/Linux 시간, 컴퓨터 시간〉, 《정보통신기술용어해설》, 2019-07-21
참고자료[편집]
- 강혁, 〈TimeStamp를 활용한 전자문서 진본성 확보〉, 《SlidePlayer》, 2010-10
- despair35, 〈동시성제어 타임스탬프 기법〉, 《네이버 블로그》, 2017-01-20
- Jun Hosoi, 〈what is a Timestamp?〉, 《GlobalSign 블로그》, 2017-02-10
- 자재복, 〈Timestamp, Time Stamp, Unix/Linux Epoch 타임스탬프, Unix/Linux 시간, 컴퓨터 시간〉, 《정보통신기술용어해설》, 2019-07-21
- 〈블록체인 타임스탬프 (Time Stamp)〉, 《하이노마드》, 2018-11-08
- fistful,〈bitcoin block의 timestamp〉, 《티스토리》, 2018-09-07
같이 보기[편집]