티스토리 뷰

전자 서명이란,


문서에 사인이나 인감 날인에 해당하는 기능을 컴퓨터에서 똑같은 역할로 실현하기 위한 기술이다.


이름 그대로 디지털 세상에서 사인(서명) 하는 것을 말한다.



해시란,


해시 함수에 의해 얻어지는 값이 해시 값, 해시 코드, 해시 체크섬 등등 이라 불리는데 간단하게 해시 라고 부른다.


해시를 구하기 위해서는 해시 함수를 이용하는데, 이는 임의의 길이의 데이터를 고정된 길이의 데이터 값으로 변환 시키기 위해 함수를 사용하는 것이다.



그렇다면 왜 블록체인에서 전자 서명과 해시 기술이 중요한 역할을 할까?


- 데이터 원본의 변경이나 거짓 행세를 검출 할 수 있다.


- 부인을 방지 할 수 있다.


이 두가지가 전자 서명과 해시 에서 주의깊게 봐야 하는 핵심이다.

(아래에서 설명하겠지만, 이 전자 서명과 해시 만으로 블록체인 시스템 상에서 가지고 있는 문제점을 모두 해결할 수 있지 않다. 그러나 이 기술 없이 블록체인이 유지 될 수 없다는 것을 다시 한번 말한다.) 




1. 전자 서명



전자 서명은 전자 데이터의 타당성을 증명하는 것이다.


전자 데이터를 보내는 사람이 서명을 생성하고 받는 사람은 그 서명을 검증해 타인에 의한 위조나 변조가 이루어졌는지를 확인할 수 있다.



전자 서명이 개발되기 이전에는 메시지 인증 코드가 사용되었다.

하지만 메시지 인증 코드의 취약한 점은 부인 방지를 확인할 수 없었다. (송신자가 나는 그런거 보낸 적 없다. 난 모른다 식)


전자 서명은 이런 해결을 하기 위해 개발 되었다.


전자 서명을 이용한 해결


1) 앨리스(송신자)가 사용하는 키는 앨리스만이 알고 있는 개인적인 것

2) 앨리스는 메시지 송신지 송신 시에 그 개인적인 키를 써서 [서명] 을 작성

3) 수신자 밥은 앨리스의 키와는 다른 키를 써서 [서명] 을 검증


송신자는 공개 키 암호를 사용하여 데이터를 암호화 하는 과정에서 개인키(서명용 키)를 사용하여 전자 서명을 만들고, 

수신자는 송신자에게 받은 공개키(검증용 키)로 암호화 된 데이터를 복호화 하는 과정에서 검증을 하게 된다.



-> 블록체인은 전자 서명에 의해 트랜잭션의 정당성을 보증한다. 여기서 말하는 트랜잭션은 거래를 말하며, 전자 서명을 이용하여 보낸 사람만 알고 있는 비밀키로 암호문을 생성하기 때문에 그 암호문이 서명으로서의 의미를 가진다. 또한 그 서명을 검증하기 위한 공개키는 공개됐기 때문에 누구나 서명을 검증할 수 있다.




※ 서명과 검증의 시간적 흐름

       




송신자와 수신자 사이의 데이터 전송 시 위의 그럼처럼 일어난다.


블록체인은 하나하나의 트랜잭션(거래)을 체인으로 연결연결하여 위조, 변경, 부인 등을 방지하고 있다.



※ 트랜잭션에서 전자 서명을 이용



블록체인에는 발행된 모든 트랜잭션이 저장돼 있으며 각 트랜잭션에 전자 서명과 공개키가 세트로 부여돼 있다. 그렇기 때문에 네트워크의 참가자는 과거 블록체인상에서 수행된 모든 트랜잭션을 순차 검증할 수 있다. 


트랜잭션의 전자 서명을 검증하면 확인 할 수 있는 것


● 제삼자가 트랜잭션 내용을 위조하거나 변조하지 않았는지 여부


● 제삼자가 도용 등을 통해 트랜잭션을 수행했는지 여부


● 코인의 정당한 소유자가 제대로 트랜잭션을 수행했는지 여부





2. 해시

해시는 전자 서명과 마찬가지로 전자 데이터로부터 생성되는 값이다. 전자 서명과의 차이점은 생성된 해시는 다시 원래 데이터로 변환할 수 없다는 것이다. 전자 데이터로부터 해시를 만들 수는 있지만 해시로부터 원본 전자 데이터를 만들어내는 것은 불가능하다.


특성

● 전자 데이터의 고유한 해시를 생성함

● 전자 데이터의 길이(비트 길이)와 상관없이 고정된 크기의 해시를 생성함 (해시 사이즈는 사용하는 해시 함수가 결정)

● 전자 데이터가 1비트라도 변하면 완전히 다른 해시가 만들어짐 (해시는 전자 데이터의 내용에 따라 고유한 값을 가짐)


- 해시는 보안 분야에서 널리 사용되는데 이는 해시 함수가 원래의 문장을 복호화할 수 없게 만드는 장점, 그리고 원문과 해시값 사이에 선형적 관계가 없다는 특성을 지니고 있기 때문이다. 해시 함수의 결과물은 고정된 길이의 숫자이므로, 원래의 정보는 손실된다. 또한 이런 특성 때문에 하나의 원 데이터는 하나의 해시값만 가지지만, 하나의 해시값을 만들어낼 수 있는 원본 데이터는 매우 많다. 그 때문에 해시값만 가지고는 아무리 용을 써도 해싱된 값을 복원해내는 것은 불가능하다.


따라서 비밀번호, 전자서명, 전자투포, 전자상거래와 같은 민감한 입력의 무결성을 검증할 때 사용된다. 그렇기에 어떤 해시함수에서 해시 충돌이 일어나기 쉽다는 것은 보안 분야에서는 매우 민감한 문제에 해당한다. 데이터의 무결성과 직접적인 연관이 있기 때문이다.



블록체인에서 해시 이용


블록체인은 복수의 트랜잭션을 모은 블록을 만들고, 블록에는 이전 블록의 해시를 포함시킨다. 그리고 해시 계산에 사용하는 Nonce(해답)이라는 값을 세트로 첨부한다.



ex) 비트코인의 블록체인 연결

블록이 체인화 되는 과정을 보여준다.

99번째 블록 이전에는 98,97,96....1번째 블록까지 있을 것이다. 블록해더란 비유하자면 알집이라고 생각한다. 거래 기록이 문서의 각 페이지라면, 몇장 되는 여러 페이지가 하나의 문서파일로 저장되면 머클 루트가 되고 비번을 걸어 알집압축을 한게 블록해더라고 볼 수 있다. 블록 해더는 해당 블록 이전의 블록의 압축된 알집을 받은 것을 포함하여 새로운 압축알집을 만들어 다음으로 보내기 위해 해싱을 하여 보낸다. (여기서 말하는 머클루트는 머클트리의 루트이며 각 블록에 기록이 되는 많은 트랜잭션들을 해싱하여 해시값을 구하고 또 구하고 해서 머클 루트를 만든다. 그 머클 루트가 블록해더에 들어가게 된다. )



여기서 작업증명이 되면 하나의 블록이 생성 된다.


※ 블록체인 구조와 이론 예제로 배우는 핀테크 핵심 기술 / 아카하네 요시하루, 아이케이 마나부 지음 양현 옮김 참조

※ 위키백과 참조 / 티스토리  http://new-flowing.com  참조

TAG
more
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함