728x90
반응형
암호화폐
- 제 3의 신뢰기관을 사용하지 않고, P2P 네트워크를 기반으로 화폐의 안전성 보장
- 분산 네트워크 환경 기반 : 중앙 기관, 중개 기관 또느느 신뢰기간 등이 필요없으므로 이들에 대한 비용 부담(수수료) 없음
- 화폐의 이중 사용방지를 위해서 P2P 기반 Blockchain 개념을 처음으로 도입한 전자화폐
- BItCoin 프로그램을 설치한 사용자는 누구나 사용 가능
- 최초로 50비트코인 발행
암호화폐의 특징은
- 은행과 같은 제3의 신뢰기관을 필요로 하지 않는다
- 블록체인을 이용해서 안전성을 보장한다
거래 과정
- A -> B 송금
- A가 생성한 거래 정보 + 전자 서명 (증명)
- P2P 네트워크에 있는 모든 사용자에게 거래 정보가 broadcasting 됨
- 이 사용자들은 해당 거래가 A가 만든 것임을 확인
- 승인된 거래 정보가 모아져서 블록이 생성됨
- 블록 해시 계산
- 이전 블록, 블록 체인에 연결
- 실제 자금이 이동
사용자
- 모든 사용자는 자신의 개인키 - 공개키 쌍을 보유
- 하지만 공개키로부터 사용자의 신원을 알 수 없음 > 사용자의 익명성 보장
거래
- A -> B 비트코인 이체
- A : H(거래내역 + B의 공개키)를 A의 개인키로 전자 서명 생성
- 사용자 인증
- 거래 내역의 위조 불가능성
- A가 아닌 사용자는서명 생성 불가능
현재 A -> B 거래 뿐만 아니라, 이전의 거래내역까지 포함되어 서명을 생성한다
어디에서 어디로 이체가 되는 것을 기록한다.
이렇게 생성된 전자 서명 내에는 또 다른 이전에 보낸 사람의 전자 서명이 보내진 것과 같다
- P2P 서버에 broad casting
Timestamp server
- 10분 단위로 P2P에 broadcasting된 모든 거래 내역을 모아서 하나의 block을 생성
- 현재까지 생성된 모든 block들에 대한 chained-timestamp 생성
- blockchain
- Time stamp = Hash(이전 블락의 해시 값 + 현재 블락의 내용)
- 지금까지의 모든 거래 정보가 chained-hash 값으로 저장 및 모든 사용자들에게 공유 -> 거래 내역이 쌓을 수록 blockchain이 길어질 것인가?
- 거래 내역에 대한 부인 방지 기능 제공 -> 전자서명
- 거래 내역 위조 불가 기능 제공 -> 전자서명
- 이중지불 방지 기능 제공 -> 거래 사실을 누구나 확인 가능해야 함
분산 환경에서의 Timestamp 구현 -> Proof of Work (작업 증명)
- Implementing blockchain in P2P platform
- 제 3의 신뢰기관이 없으므로 chained-timestamp를 누가 할 것인가?
- 모든 사용자들끼리 현재 네트워크 상에서 발생한 모든 트랜젝션 정보를 안전하게 유지 관리하면서 위변조될 수 없도록 해야한다.
-> 블록체인 - 각각의 블록으로 생성 -> 해시 계산 + 현재 블록 => 해시 값 하나
- 해당 해시값은 이전의 블록들과 전부 연결되어있는 것임
- 즉, 모두 검사한다는 뜻은 현재의 블록해시를 정확하게 만들 수 있는지 확인하는 것
- 단순히 해시만 시키게 되면 지금까지 발생한 거래정보에 대한 위변조가 일어날 수 있다.
-> 작업 증명 - 작업 증명 : 새로운 block에 대한 해시 값을 찾아내는 작업, 최종 해시 값
- 채굴 (mining) : 작업 증명을 수행하는 과정
- H(주어진 트렌젝션 + 랜덤값)이 만족해야할 특성이 존재한다
- 랜덤값을 찾아서 조건을 만족시키는 것을 확인하는 과정이 채굴
- 최초로 작업 증명을 끝낸 사람이 chained-timestamp생성 -> incentive 지급
작업 증명
블록 해시의 조건 : 앞자리 18자리가 모두 0이여야함
- Hash (이전 블록의 해시 값 + 현재 블록의 거래 내역들 + Nonce)
- 수행 결과 앞자리 18비트가 모두 0
- Random값을 먼저 찾는 사람이 성공 -> Nonce가 가질 수 있는 모든 경우의 수를 도전
한 블록에 대한 작업 증명이 완료되어야, 실제 블록 내에 포함된 모든 거래에 대한 이체가 완료됨
하나의 블록 안에는 현재 트랜젝션, 이전 해시, nonce 값이 존재한다.
해시 값을 효율적으로 검증하기 위해 tree 형태로 만든다.
트랜젝션들에 대한 해시 값은, Merkle Tree의 root 해시를 확인하면됨
T3가 실제로 발생한 트랜젝션인지 확인하고 싶다.
- 트랜젝션 자체에 대해서 전자서명을 통해 인증 가능 -> 트렌젝션의 내용이 맞다는 것을 확인
- p2p 네트워크 상에 있던 것을 검증하기 위함
- 해시 시킨다
- 루트 해시를 만들기 위해 사용된 중간 해시들을 이용하여 root hash가 되는지 확인
- 총 해시를 시킴 -> 해시 확인
로컬에 해시 값만 가지고 있어도 크게 영향이 없다
작업 증명의 생성이 안전성 보장
- 정직한 채굴자 > 악의적인 채굴자 -> 안전성 보장 : 정직한 채굴자가 많으면 올바른 block chain을 먼저 생성할 확률이 높음
- 가장 긴 blockchain이 가장 정확함 : 실시간으로 모든 block이 공유되므로 가장 긴 blockchain을 기준으로 새로운 blockchain 생성
- 해커가 과거의 거래 내역을 위조하는 것은 불가능
- 과거 거래 내역을 포함하는 블록부터
- 이후에 모든 블록을 새로 위조해야함
- 정확한 blockchain이 계속해서 갱신
- 공격 블록부터 이후 모든 블록 추가 후에
- 최신 블록까지 따라집을 수 없음
728x90
반응형
'Hacking > Cryptography' 카테고리의 다른 글
암호화 통신 (0) | 2024.12.16 |
---|---|
암호 프로토콜 활용 (1) | 2024.12.16 |
[전자상거래] SET 프로토콜 (0) | 2024.12.15 |
공개키 기반 구조(PKI) (1) | 2024.12.15 |
전자서명 (1) | 2024.12.15 |