[알고리즘/데이터보안] 블록체인(Block-Chain)
블록 체인
관리 대상 데이터를 블록
이라고 하는 소규모 데이터들이 P2P방식을 기반으로 모여 이룬 체인 연결고리 분산 데이터 저장 환경
즉, 네트워크에 중앙 서버가 아닌 참여하는 모든 사용자가 모든 거래 내역 등을 공동으로 기록, 관리하여 데이터를 분산, 저장하는 기술을 의미
특징
편집이 불가능하고 추가 작업(APPEND
)만 가능한 데이터베이스
탈중앙화
(Decentralization) 데이터베이스의 복제본을 모두가 소유하고 있기 때문에 개인의 위조를 방지할 수 있다
블록의 구성
- 블록 헤더
- 블록의 정체성
- 비전
- 이전블록의 해시 : 현재 블록이 이전 블록과 연결되어 있음을 의미
- 타임스탬프 : 채굴 경쟁과 직접적 연관이 있는 부분
- 난이도 목표 : 채굴 경쟁과 직접적 연관이 있는 부분
- 논스: 채굴 경쟁과 직접적 연관이 있는 부분
- 머클루트
- 블록의 정체성
- 거래 카운터 : 거래의 개수
- 거래 : 블록에 기록된 거래 내역
해시
단방향 암호화, 결정론적
임의의 길이를 갖는 문자열을 입력받아 고정된 길이의 해시 값을 출력하는 함수를 해시 함수라 하는데 이 함수로 인해서 출력된 값을 해쉬 값이라 부른다. 이 때 해쉬 값으로부터 기존 메시지를 역산할 수는 없는 성질을 단방향성
이라고 한다.
또한, 메시지가 다르면 비슷하다 할지라도 해시값도 다르다는 특징이 있는데 해당 특징으로 인해 해시 함수를 무결성을 확인하기 위한 방안으로 사용하며 결정론적
이다라는 의미는 해시 알고리즘은 특정 입력 대해 항상 같은 해시 값을 반환한다는 것을 뜻한다.
일반적인 해싱 알고리즘은 MD4, MD5, SHA, RIPEMD, WHIRLPOOL, TIGER가 있다.
이전 블록 해쉬 + 데이터 => 자기 자신만의 블록 해쉬 값 이렇게 해쉬 값을 가지고 블록을 연결시킨다는 의미에서 체인이라는 단어를 사용하는 것이다.
데이터가 조금이라도 변경된다면 해쉬값도 변경되고 그 이후 블록에도 영향을 미치기 때문에 올바른 체인을 생성할 수 없게 된다.
블록체인을 사용하는 모든 사용자들이 같은 체인을 가지고 있으며, 각자의 체인을 비교함으로서 같은 체인인지 검증이 가능하다.
머클 루트(Merkle Root)
이진트리라는 이름으로도 알려져 있으며,
두 개씩 거래를 묶은 다음 해싱 알고리즘을 통해 해시 값으로 나타내고 또 그렇게 묶은 값들을 다시 두 개씩 묶어서 다시 해싱하여 수 백개의 거래 값들을 가장 꼭대기에 위치한 하나의 데이터로 만들어준다.
이렇게 이진트리 방식으로 구성하게되면 거래량이 기하급수적으로 늘어나도 특정 거래를 찾는 경로는 단순하다는 이점이 있다. 그렇기에 거래 내역을 위조하려는 시도가 있어도 머클트리의 경로를 따라가면 해시값이 다른 것이 나오게 되어 거래의 위변조도 쉽고 빠르게 알 수 있게 되고 이를 방지할 수 있다.
종류
-
퍼블릭 블록체인(Public BlockChain)
개방형 블록체인으로 누구나 트랜잭션을 생성할 수 있다 -
프라이빗 블록체인(Private BlockChain)
폐쇠형 블록체인으로 주로 기업에서 사용하기에 엔터프라이즈 블록체인(Enterprise BlockChain)이라고도 한다.서비스 제공자의 승인을 받아야만 참여가 가능한 방식 -
콘소시엄 블록체인(Consortium BloackChain)
프라이빗 블록체인을 확장한 방식으로 여러 기업또는 기관이 공동으로 참여한다.
작업증명(PoW : Proof of Work)
모든 블록(노드)가 포함된 거래 내역이 악의적인 공격자에 의해 변조되지 않은 올바른 블록체인을 공유하는 있다는 것을 입증하기 위해 P2P 네트워크, 공개키-개인키 암호, 공유된 데이터베이스에 정보를 저장하고 검증하는 방법을 관리하는 합의 알고리즘
(Consensus Mechanism)이라는 것을 활용하는데 여러 종류 중에서도 비트코인의 경우 PoW(작업증명 : Proof of Work)라는 합의 알고리즘을 사용한다.
블록체인은 이와 같은 요소 기술들을 결합해 네트워크 상에서 투명성을 확보하며 데이터의 위조/변조 방지 및 보안성을 강화한 기술이다
마이닝(Mining)
PoW란 컴퓨팅 파워를 이용해 블록의 해쉬 값을 추적하여 블록체인 네트워크에 새로운 블록을 추가하는 방식의 알고리즘이다
위 과정이 채굴(Mining)에 해당한다.
비트코인의 경우 채굴자가 네트워크에 새로운 블록들을 추가할 때 마다 받을 수 있으며 새로운 블록들을 추가하기 위해서는 네트워크의 질문에 원하는 답을 찾아서 논스 값을 변경해야 한다.
논스(Nonce)는 채굴자가 변경할 수 있는 유일한 값이며 Nonce 값을 변경할 때 마다 해쉬 값이 달라지는데, 채굴자는 그중에서도 현재 난이도에 맞춰서 네트워크가 던지는 질문에 적절한 값을 가지는 해쉬를 만들어내야 한다.
활용
- 암호화폐 거래
- ICO(Initial Coin Offering)
- NFT(Non-Fungible Token)
- DEX(Decebtrakuzed Exchange)
- 스마트 컨트랙트(Smart Contract)
사전에 정해진 임의의 규칙에 따라 디지털 자산을 자동적으로 이전하는 시스템 - Vitalik Buter
- 블록체인이 지니고 있는 탈중앙화를 기반으로 금융거래, 부동산 계약, 공증 등 다양한 형태의 계약을 체결하고 이행하는 것. (블록체인 2.0)
- 다른사람들과의 교류와 코드로 소통이 가능하며 또한 공유 네트워크에 업로드할 수 있다
- 수정은 불가하나 공유/검증/실행은 가능하다
- 원하는 소스를 다 활용할 수 없음(블록체인 네트워크 위에서만 실행 가능)
- 신뢰 기반이 아닌 특수한 네트워크, 환경을 요구
- 스마트 컨트랙 지원 암호화폐
이더리움, Kusama, Polkadot, Cardano, Cosmos - 개발자들은 이더리움 상에서 스마트 컨트랙트를 활용하여 암호화폐 지갑, 금융 애플리케이션, 마켓, 게임과 같이 새로운 종류의 탈중앙화된 애플리케이션(DApps)을 개발할 수 있다.
단점
블록체인 네트워크는 그 특성상 노드의 신뢰를 기반으로 하기 때문에, 신뢰가 무너지는 순간 블록체인 역시 급격하게 무너질 수 있다는 치명적인 맹점이 있다.
또한 참여하는 노드 수(분산되어 데이터를 저장되는 주체의 수)가 매우 적을 경우에 외부 공격자와 침입에 취약하다
탈중앙화, 보안성, 확장성의 문제로 이 세 가지 문제 중 어떠한 두 가지는 만족시킬 수 있지만, 남은 한 가지는 만족시킬 수 없는 트릴레마의 문제가 있으며 이 문제를 보완하기 위해 사이드체인, 샤딩, 인터체인, 라이트닝 네트워크, 플라즈마 기술이 있다.
댓글남기기