암호화폐 이중지불은 어떤 문제이며 왜 이런문제가 발생하는 건가요?
암호화폐 이중지불에 문제가 발생했었는데요 암호화폐 이중지불이 어떤 문제이며 왜 중앙화시스템에서는 발생하지 않고 비트 코인등과 같은 암호화폐에서 발생하는지 그리고 이에대한 해결방법으론 무엇이 있는지 알고싶습니다.
안녕하세요. 질문주신 이중지불 문제는 51%공격에 의해 발생되는 문제입니다. 51% 공격은 블록체인 전체 노드 중 50%를 초과하는 해시연산력을 확보한 뒤 거래정보를 조작하여 이익을 얻으려는 행위입니다. 좀 더 자세히 설명 드리자면 악의적인 공격자가 전체 네트워크의 50%를 초과하는 막강한 해시 연산 능력을 보유하고, 다른 일반 노드들보다 더 빠른 속도로 신규 블록을 생성하여 네트워크에 전파함으로써, 다른 노드들이 정상적인 데이터가 아니라 위변조된 데이터가 포함된 블록체인을 채택하도록 만드는 공격 기법입니다. 이러한 문제로 인해 51프로 이상의 공격에 대해 사람들이 걱정을 하고 있습니다.
하지만 51% 공격을 성공하려면, 해당 블록체인 네트워크에 참여한 다른 모든 노드들의 해시 연산 능력을 합친 것보다 더 큰 해시 파워를 보유해야 합니다. 블록체인 네트워크에 참여자 수가 늘어남에 따라 50% 이상의 해시 파워를 확보하는 것이 매우 어렵기 때문에, 51% 공격은 사실상 불가능하죠.
비트코인 백서에 나와 있는 이중지불에 대한 내용을 조금 이해하기 쉽게 설명하려고 노력(?)하였습니다.
제 블로그에 글과 영상을 올린 자료인데, 관련 내용만 올려드립니다.
이해가 조금 어려우시면, 영상 참고하시면 도움이 될것 같습니다.
We propose a solution to the double-spending problem using a peer-to-peer network.
우리는 이중지불 문제를 해결하기 위해서 P2P 네트워크 방식을 제안한다.
* 이중지불(double-spending) : 단일 화폐 단위가 두번 지불되어 발생하는 문제.
예) A가 통장잔고에 10,000원이 있는데, 이 10,000원을 동시에 B,C에게 10,000원씩 보내려고 시도하면서 발생하는 문제. (중앙화방식에서는 순차적으로 처리하므로 문제가 없으나, 네트워크에서는 발생할 수 있는 문제)
[B] 이중지불 문제 해결방안
The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.
계속 진행되고 있는 암호화(hash-based) 작업증명[POW] 체인에 네트워크 타임스탬프 및 거래를 암호화(by hashing)방법으로 기록한다.
이렇게 진행하게 될 경우, 작업증명[POW]을 되풀이 하지 않는 이상, 기록된 데이터는 변경되지 않는다.
* 해쉬[hash]
해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. 그 용도 중 하나는 해시 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용된다. 해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다. 예를 들어서, DNA sequence에서 유사한 패턴을 찾는데 사용될 수도 있다.
또한 암호학에서도 사용될 수 있다.
암호용 해시 함수는 매핑된 해싱 값만을 알아가지고는 원래 입력 값을 알아내기 힘들다는 사실에 의해 사용될 수 있다. 또한 전송된 데이터의 무결성을 확인해주는 데 사용되기도 하는데, 메시지가 누구에게서 온 것인지 입증해주는 HMAC를 구성하는 블록으로 사용된다. 해시 함수는 결정론적으로 작동해야 하며, 따라서 두 해시 값이 다르다면 그 해시값에 대한 원래 데이터도 달라야 한다. (역은 성립하지 않는다) 해시 함수의 질은 입력 영역에서의 해시 충돌 확률로 결정되는데, 해시 충돌의 확률이 높을수록 서로 다른 데이터를 구별하기 어려워지고 검색하는 비용이 증가하게 된다.
<해쉬함수 충돌>
해쉬함수중에는 암호학적 해쉬함수(Cryptographic Hash Function)와 비암호학적 해쉬함수로 구분되곤 한다.
암호학적 해쉬함수의 종류로는 MD5, SHA계열 해쉬함수가 있으며 비암호학적 해쉬함수로는 CRC32등이 있다.
암호학적 해쉬함수는 역상(pre-image), 제2역상(2nd preimage), 충돌쌍(collision)에 대하여 안전성을 가져야 하며 인증에 이용된다 . 암호학적 해쉬함수는 임의의 길이를 입력 받기는 하지만 MD Strength Padding할 때 길이정보가 입력되므로 최대 길이에 대한 제한이 있다. 예를 들어 패딩시 하위 8비트에 길이정보가 입력 되는 경우에는 해쉬가능한 최대 길이는 0xFF가 되어 255바이트가 된다.(실제 길이정보는 패딩방식에 따라 다를 수 있다)
특징
해시 함수의 가장 기본적인 성질은 두 해시 값이 다르다면 원래의 데이터도 다르다는 것이다.
이 특징은 해시 함수가 결정적이기 때문이다. 반대로 해시 함수는 단사 함수가 아니다. 같은 해시 값을 갖더라도 원래의 입력값이 같다는 것을 시사하지만 보장해주지는 않는다. 원래 입력의 한 비트만 바뀌더라도 해시 함수의 성질로 인해 해시 값은 크게 달라진다.
출처 : 위키피디아(https://ko.wikipedia.org)
* 작업증명[POW,Proof of work] : 신뢰에 대한 증명을 위하여 요청자로부터 일정수준의 작업을 요구되고, 요청한 작업을 완수하면 신뢰가 되었다고 증명됨, 비트코인의 경우 작업증명에 대한 프로세스를 해쉬함수 방법으로 채택하고 있음.
* 네트워크 타임스탬프[Network timestamps] : 분산시스템에서 사용되는 논리적인 시간 기록관계
*해쉬체인은 재귀적 함수임. 재귀적함수란? 돌고도는 함수?..
영상설명
https://www.youtube.com/watch?v=xwvV-KPcQRQ&feature=youtu.be